我有一个字符串列表,其中一些字符串中有重复。例如:
[[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 ="")然后调用拆分对象上的唯一函数。如果我选择列表中的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?
答案 0 :(得分:0)
您可以尝试:
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
循环那样迭代