R中列表的哪个()函数

R中列表的哪个()函数,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.

这应该很容易,但我希望了解如何返回包含一个元素的列表的索引。例如,在下面的列表中,假设我想找到“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.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