在循环中使用r访问索引数据



假设我有5个数据库,命名为data1-data5。我基本上想创建一个循环,打印数据的前10行。在我naïve的脑海中,代码应该看起来像这样:

for (i in 1:5){
print(head(data[i]))
}

这行不通。正确的做法是什么?如何将[i]定义为"索引"不同数据库的变量?

另一种方法是使用get函数:

for (i in 1:5){
tmp <- get(paste0("data", i))  
## Assigns the data to the variable tmp - just like tmp <- data1/data2/data3 etc
print(head(tmp))
}

最好将这些对象放在一个列表中,并使用[[来引用它们。但是,如果必须为对象使用单独的名称,则需要解析它们,并对结果表达式求值。

这里有一个你可以模仿的例子。为简洁起见,它打印数值对象的值,而不是"数据库"的头。

data1 <- 1; data2 <- 2; data3 <- 3
for (i in 1:3) {
print(eval(parse(text=paste0("data", i))))
}

最新更新