在for循环中增加列表将返回NAs
我想使用for循环收回一些索引,现在,循环只返回NAs在for循环中增加列表将返回NAs,r,loops,R,Loops,我想使用for循环收回一些索引,现在,循环只返回NAs df <- data.frame(v1 = c("a", "b", "c", "d", "e"), v2 = c("f", "g", "h", "i", "j"), v3
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] 1
$bb
[1] 2 4
$ee
[1]
这个我一直不知道的非常简单的事情是什么?我们可以使用
lappy
来循环模式
向量,调用grep
将参数“x”指定为“v3”列
lapply(vec, grep, x = df$v3)
或者使用匿名函数调用
lapply(vec, function(pat) grep(pat, df$v3))
列表
res
可以在OP的post中初始化为
res <- vector('list', length(vec))
resdf[1]1
#>
#>bb美元
#> [1] 2 4
#>
#>$ee
#>整数(0)
您在vec的长度上循环,因此需要沿着或1:length
。否则,您将使用vec
中的实际值进行子集设置,而不是它们的索引,因此NA
。
res <- vector('list', length(vec))
for (i in seq_along(vec)){
temp <- vec[i]
res[[i]] <- grep(temp, df[,3])
}