gpt4 book ai didi

r - 在 R 中查找列表元素

转载 作者:行者123 更新时间:2023-12-04 01:21:07 25 4
gpt4 key购买 nike

现在我正在使用 R 中的字符向量,我使用 strsplit 逐字分隔。我想知道是否有一个函数可以用来检查整个列表,看看列表中是否有特定的单词,并且(如果可能)说出它在列表中的哪些元素。

前任。

a = c("a","b","c")
b= c("b","d","e")
c = c("a","e","f")

z=list(a,b,c) ,然后 f("a",z)将最佳地产生 [1] 1 3 , 和 f("b",z)将最佳地产生 [1] 1 2
任何帮助都会很棒。

最佳答案

正如alexwhan所说,grep是要使用的函数。但是,将它与列表一起使用时要小心。它没有做你认为它在做的事情。例如:

grep("c", z)
[1] 1 2 3 # ?

grep(",", z)
[1] 1 2 3 # ???

幕后发生的事情是 grep使用 as.character 将其第二个参数强制转换为字符.当应用于列表时,什么 as.character返回是通过解析它获得的该列表的字符表示。 (模一个取消列表。)
as.character(z)
[1] "c(\"a\", \"b\", \"c\")" "c(\"b\", \"d\", \"e\")" "c(\"a\", \"e\", \"f\")"

cat(as.character(z))
c("a", "b", "c") c("b", "d", "e") c("a", "e", "f")

这是什么 grep正在工作。

如果你想运行 grep在列表中,更安全的方法是使用 lapply .这将返回另一个列表,您可以对其进行操作以提取您感兴趣的内容。
res <- lapply(z, function(ch) grep("a", ch))
res
[[1]]
[1] 1

[[2]]
integer(0)

[[3]]
[1] 1


# which vectors contain a search term
sapply(res, function(x) length(x) > 0)
[1] TRUE FALSE TRUE

关于r - 在 R 中查找列表元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17358289/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com