R在for循环中调用动态创建的列表

时间:2015-12-23 23:57:46

标签: r

我创建了以下名称为cluster_1,cluster_2 ...的动态列表,如下所示:

observedUserShifts <- vector("list")
cut <- 2

for (i in 1:cut) {
   assign(paste('cluster_', i, sep=''), subset(sortedTestRTUser, cluster==i))
   observedUserShifts[[i]] <- mean(cluster_1$shift_length_avg)
}

请注意,我已经cut = 2,因此,由于'assign'功能,名称会动态创建2个列表:cluster_1和cluster_2

我想在for循环中调用上面的每个列表。请注意,我在for循环中有一个硬编码的cluster_1(for循环中的第二行)。如何更改此设置以使其不是硬编码的?

我试过了:

> observedUserShifts[[i]] <- mean((paste('cluster_','k',sep='')$shift_length_avg)
+ )
Error in paste("cluster_", "k", sep = "")$shift_length_avg : 
$ operator is invalid for atomic vectors

1 个答案:

答案 0 :(得分:0)

同意这是次优的编码习惯,但要回答具体问题,请使用get

for (i in 1:cut) {
   assign(paste('cluster_', i, sep=''), subset(sortedTestRTUser, cluster==i))
   observedUserShifts[[i]] <- 
             mean( get(paste('cluster_', i, sep='') )[['shift_length_avg']] )
}

请注意,我选择使用带有引用列名的$,而不是[[