R中列表的哪个()函数
这应该很容易,但我希望了解如何返回包含一个元素的列表的索引。例如,在下面的列表中,假设我想找到“a”是元素的所有索引。我想要一个函数返回索引1R中列表的哪个()函数,r,text-mining,R,Text Mining,这应该很容易,但我希望了解如何返回包含一个元素的列表的索引。例如,在下面的列表中,假设我想找到“a”是元素的所有索引。我想要一个函数返回索引1 > x = list(c("a", "b"), "c") > x [[1]] [1] "a" "b" [[2]] [1] "c" > which(x=="a") integer(0) 当然,这()在这里不起作用。任何帮助都将不胜感激 您需要迭代列表元素并检查每个集合中的元素。 sapply(x, function(e) is.
> x = list(c("a", "b"), "c")
> x
[[1]]
[1] "a" "b"
[[2]]
[1] "c"
> which(x=="a")
integer(0)
当然,这()在这里不起作用。任何帮助都将不胜感激 您需要迭代列表元素并检查每个集合中的元素。
sapply(x, function(e) is.element('a', e))
## [1] TRUE FALSE
which(sapply(x, function(e) is.element('a', e)))
## [1] 1
sapply
表达式返回一个逻辑向量,指示列表中每个元素是否存在a
,以及哪个返回TRUE
元素的索引。我不太清楚要如何格式化结果。由于有两个列表元素,如果您只是想将索引作为向量,那么当您有一个较长的列表时,很难确定匹配来自哪个列表元素。您可以在这里使用哪个
。只要写
sapply(x,函数(y),其中(y==“a”))
或者您可以使用grep
,它返回匹配模式的索引。在这里,我将显示它在未列出的列表上使用,然后在列表上迭代
> grep("a", unlist(x))
# [1] 1
> sapply(x, function(y) grep("a", y))
# [[1]]
# [1] 1
# [[2]]
# integer(0)
您还可以使用%
中的%查看“a”
出现的确切位置。这将返回一个逻辑向量
> lapply(x, `%in%`, "a") ## or lapply(x, `==`, "a")
# [[1]]
# [1] TRUE FALSE
# [[2]]
# [1] FALSE