簡體   English   中英

不適用於R中的列表

[英]lapply not iterating through list in R

我有一個字符串列表,其中某些字符串中有重復項。 例如:

   [[1]]
   [1] "gr gal gr gal"

   [[2]]
   [1] "gr gal"

   [[3]]
   [1] "gr gal ir ol"

   [[4]]
   [1] "gr gal gr gal"

   [[5]]
   [1] "gr gal"

我想要的輸出是:

   [[1]]
   [1] "gr gal"

   [[2]]
   [1] "gr gal"

   [[3]]
   [1] "gr gal ir ol"

   [[4]]
   [1] "gr gal"

   [[5]]
   [1] "gr gal"

從字符串中刪除重復項的位置。

我的計划是調用strsplit(x,split =“”),然后在split對象上調用唯一函數。 如果我選擇列表的1個成員,則我的代碼可以正常工作:

  > strsplit(pathmd1[[76]], split = " ")
  [[1]]
  [1] "gr" "gal" "gr" "gal"

  > splittest <- strsplit(pathmd1[[76]], split = " ")
  > unique(unlist(splittest))
  [1] "gr" "gal"

但是,當我通過這些函數使用lapply時,會引發錯誤

    pathmd2 <- lapply(1:length(pathmd1), function(i) strsplit(pathmd1[[i]], 
               split = " "))
    pathmd <- lapply(1:length(pathmd2), function(i) unique(pathmd2[[i]])

    unexpected symbol
    77: pathmd2 <- lapply(1:length(pathmd1), function(i) 
        strsplit(pathmd1[[i]], split = " ")
    78: pathmd
        ^

為什么函數不能與lapply一起使用?

你可以試試:

lapply(f, function(x) unique(unlist(strsplit(x, " "))))
#output
[[1]]
[1] "gr"  "gal"

[[2]]
[1] "gr"  "gal"

[[3]]
[1] "gr"  "gal" "ir"  "ol" 

[[4]]
[1] "gr"  "gal"

[[5]]
[1] "gr"  "gal"

f是您的列表。

不需要像for循環那樣進行迭代

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM