0
我有一些字符串列表,其中有一些字符串中有重复。例如:lapply无法遍历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 =“”),然后调用拆分对象上的唯一函数。如果我这样做,选择列表中的一名成员,我的代码工作正常:
> 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一起工作?
我觉得你越来越显示的错误,因为你在你的'strsplit'呼叫在该例子到底忘了“)”进行迭代像 –
缺少尾随括号在'pathmd < - ...'命令的末尾,而不是'strsplit'命令。 – r2evans
即使传递单个字符串,strsplit也会提供一个列表输出。考虑将你的列表重新写入一个字符向量中。 strsplit的输出将采用预期的格式。然后这个电话就是:'lapply(strsplit(charVec,''),unique)'。 – AdamO