r-在矢量中使用expand.grid的组合

  • 本文关键字:expand grid 组合 r grid
  • 更新时间 :
  • 英文 :


我想在向量中使用expand.grid,以特定格式创建myvec中所有因子的组合,并且不重复。我试着:

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

但是,不起作用,我想要的输出是:

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

求你了,有人帮忙吗?

如果我们需要为从2到'myvec'的length的组合创建单个字符串,请使用combn

grid <- data.frame(Var1 = unlist(lapply(2:length(myvec), (i) 
combn(myvec, i, FUN = paste, collapse = "_"))))

-输出

> 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

最新更新