我试图将名称基于for循环模型构建的变量的内容传输到R中的中间对象,但没有成功:
my_list <- list(first = "un", second = "deux", third = "trois")
my_vect <- c("first","second","third")
for(i in my_vect){intermediate <- get(paste("my_list$",i,sep=""))}
get(paste(“ my_list $”,i,sep =“”))错误: 找不到对象“ my_list $ first” **
my_list$first
[1] "un"
R为何找不到似乎明显存在的对象my_list$first
并求值为un
呢?
答案 0 :(得分:1)
我们可以只使用[[
代替$
my_list[[my_vect[1]]]
#[1] "un"
使用for
循环
out <- vector('list', length(my_vect))
for(i in seq_along(my_vect)) out[[i]] <- my_list[[my_vect[i]]]
或基于整个'my_vect'的子集
my_list[my_vect]
答案 1 :(得分:0)
谢谢,它解决了这个问题:
out <- vector('list', length(my_vect))
for(i in seq_along(my_vect)) out[[i]] <- my_list[[my_vect[i]]]
out
#[[1]]
#[1] "un"
#[[2]]
#[1] "deux"
#[[3]]
#[1] "trois"
for(i in seq_along(my_vect)) out <- my_list[[my_vect[i]]]
out
#[1] "trois"
我实际上只是想用一个固定的名称来捕获它的一部分……干杯:)