我想使用 for 循环取回一些索引,但现在,循环仅返回 NA。
df <- data.frame(v1 = c("a", "b", "c", "d", "e"),
v2 = c("f", "g", "h", "i", "j"),
v3 = c("aa", "bb", "cc", "bb", "dd"))
vec <- c("aa", "bb", "ee")
res <- list()
for (i in(vec)){
temp <- vec[i]
res[[i]] <- grep(temp, df[,3])
}
给出
res
$aa
[1] NA NA NA NA NA
$bb
[1] NA NA NA NA NA
$ee
[1] NA NA NA NA NA
当我为此奋斗时
res
$aa
[1] 1
$bb
[1] 2 4
$ee
[1]
我一直没有意识到的这个非常简单的事情是什么?
最佳答案
我们可以使用lapply
循环遍历pattern
向量,调用grep
将参数'x'指定为'v3'列
lapply(vec, grep, x = df$v3)
或者使用匿名函数调用
lapply(vec, function(pat) grep(pat, df$v3))
列表
res
可以在OP的帖子中初始化为
res <- vector('list', length(vec))
然后循环“vec”的序列
for (i in seq_along(vec)){
temp <- vec[i]
res[[i]] <- grep(temp, df[,3])
}
关于r - 在 for 循环内增长列表会返回 NA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63287981/