[英]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.