Reputation: 1823
I'd like to use expand.grid
in vector to create all the combinations of the factors in myvec
, in a specific format and without duplicates. I try to:
myvec <- c("B2","B3","B4","B8","NDVI","SAVI","SIPI","SR","RGI","TVI",
"MSR","PRI","GNDVI","PSRI","GCI")
grid <- expand.grid(c(rep(myvec,length(myvec))), KEEP.OUT.ATTRS = FALSE, stringsAsFactors = FALSE)
grid
# Var1
# 1 B2
# 2 B3
# 3 B4
# 4 B8
# 5 NDVI
But, doesn't work and my desirable output is:
grid
# Var1
# 1 B2_B3
# 2 B2_B4
# 3 B2_B8
# ...
# last B2_B3_B4_B8_NDVI_SAVI_SIPI_SR_RGI_TVI_MSR_PRI_GNDVI_PSRI_GCI
Please, any help with it?
Upvotes: 1
Views: 184
Reputation: 886948
If we need to create a single string for combinations from 2 to the length
of 'myvec', use combn
grid <- data.frame(Var1 = unlist(lapply(2:length(myvec), \(i)
combn(myvec, i, FUN = paste, collapse = "_"))))
-output
> head(grid)
Var1
1 B2_B3
2 B2_B4
3 B2_B8
4 B2_NDVI
5 B2_SAVI
6 B2_SIPI
> tail(grid)
Var1
32747 B2_B3_B4_B8_SAVI_SIPI_SR_RGI_TVI_MSR_PRI_GNDVI_PSRI_GCI
32748 B2_B3_B4_NDVI_SAVI_SIPI_SR_RGI_TVI_MSR_PRI_GNDVI_PSRI_GCI
32749 B2_B3_B8_NDVI_SAVI_SIPI_SR_RGI_TVI_MSR_PRI_GNDVI_PSRI_GCI
32750 B2_B4_B8_NDVI_SAVI_SIPI_SR_RGI_TVI_MSR_PRI_GNDVI_PSRI_GCI
32751 B3_B4_B8_NDVI_SAVI_SIPI_SR_RGI_TVI_MSR_PRI_GNDVI_PSRI_GCI
32752 B2_B3_B4_B8_NDVI_SAVI_SIPI_SR_RGI_TVI_MSR_PRI_GNDVI_PSRI_GCI
Upvotes: 1