R删除列表元素

时间:2015-05-21 12:13:26

标签: r list indexing

这是关于R中列表行为的一般性问题,但具体问题是:

我有一组单词列表,我试图手动删除特定单词 - 其中没有提到两次单词。

目前,我正在使用此方法

l = strsplit(c("a b", "c d"), " ")

> l
[[1]]
[1] "a" "b"

[[2]]
[1] "c" "d"

# remove the value "d"
l = lapply(l, function(x) { x[x != "d"] })

> l
[[1]]
[1] "a" "b"

[[2]]
[1] "c"

是否有任何类型的内置列表索引方法更适合使用?我觉得我应该能够在不使用lapply的情况下解析列表。如果没有,有人可以解释为什么会这样吗?

由于

1 个答案:

答案 0 :(得分:1)

您需要遍历列表中的每个元素,并检查向量是否包含d来过滤/删除它。 其中一个原因是列表可以包含各种类型的数据(functionsdata.framenumericcharacterboolean,其他{{1} },lists)所以不能进行class次操作(对于向量而言 - 就像名称一样)。

您要做的是过滤前端过滤器 - 例如,当您有列表时。最好在后端过滤你的矢量,例如获得vectorized之前:

list

前端过滤的一些替代解决方案:

l = strsplit(gsub('d','',c("a b", "c d")), " ")
#[[1]]
#[1] "a" "b"

#[[2]]
#[1] "c"