【问题标题】:How to split a character vector based on length of a list如何根据列表的长度拆分字符向量
【发布时间】:2015-05-16 14:09:51
【问题描述】:

我有一个这样的字符向量:

a<-c("tanaman","cabai","banget","hama","sakit","tanaman","koramil","nogosari",
    "melaks","ecek","hama","tanaman","padi","ppl","ds","rambun") 

我想根据列表的长度将字符向量拆分为列表,如下所示:

split.char<-list(c("tanaman", "cabai"),c("banget", "hama", 
"penyakit", "tanaman"),c("koramil", "nogosari", "melaks", "pengecekan", "hama",
 "tanaman"  , "padi", "ppl", "ds", "rambun"))  

我正在尝试使用 sapply(split.char, length) 来定义列表长度 split.char

Length <- sapply(split.char, length)
for(i in Length){
  split(a, Length(i))
 } 

但我没有得到想要的输出,而且我经常收到以下警告消息:

1: In split.default(ok, Length) : data length is not a multiple of split variable
2: In split.default(ok, Length) : data length is not a multiple of split variable
3: In split.default(ok, Length) : data length is not a multiple of split variable

【问题讨论】:

    标签: r vector


    【解决方案1】:

    您可以尝试以下方法:

    split(x=a, f=rep(seq_along(Length), Length))
    

    f 必须与 x 具有相同的长度(如果它的长度为 1 或 x 的分隔符,它将被回收)。

    【讨论】:

    • @Ihda:如果这个答案解决了你的问题,请在答案旁边打上“复选标记”。
    【解决方案2】:

    您可以使用relist,它会为“a”提供与“split.char”类似的结构(包括length

    relist(a, skeleton=split.char)
    #[[1]]
    #[1] "tanaman" "cabai"  
    
    #[[2]]
    #[1] "banget"  "hama"    "sakit"   "tanaman"
    
    #[[3]]
    #[1] "koramil"  "nogosari" "melaks"   "ecek"     "hama"     "tanaman" 
    #[7] "padi"     "ppl"      "ds"       "rambun"  
    

    【讨论】:

      猜你喜欢
      • 2021-10-03
      • 1970-01-01
      • 1970-01-01
      • 2019-02-19
      • 2023-04-04
      • 1970-01-01
      • 2021-04-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多