提取名称在for循环中内置的变量子集的值

时间:2019-06-16 19:58:24

标签: r

我试图将名称基于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呢?

2 个答案:

答案 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"

我实际上只是想用一个固定的名称来捕获它的一部分……干杯:)