使用Loop变量访问和写入特定的data.frames

时间:2018-01-18 13:59:47

标签: r loops variables for-loop dataframe

我写了一个脚本,在用户输入的帮助下读取CSV-Data。例如,当用户输入" 20 40 160"读取CSV文件1,2和3并将其保存为我的全局环境/工作区中的data.frames d20,d40和d160。变量 vel 具有用户输入的值。

现在提出实际问题: 我试图用 vel 变量在循环中操作读取数据。例如:

for (i in vel) 
{ 
  newVariable"i" <- d"i"[6]

}

我知道这不是编程的正确语法,但是我想要做的就是用特定数据框 d 编写一个具有特定行的newVariable。 结果应该是:

newVariable20 = d20[20]

newVariable40 = d40[20]

newVariable160 = d160[20]

所以我认为实际的问题是,如何使用循环变量来调用创建的数据框的名称和编写新的变量。

1 个答案:

答案 0 :(得分:0)

有几种方法可以做到这一点。一种是将所有数据帧最初存储在列表中。有几种方法可以做到这一点。从空列表开始,然后将每个df放入列表中的下一个位置。请注意,您必须使用list(df),因为数据帧实际上已经是一个列表,如果您不这样做,它就会搞砸。

list_of_df <- list(); 
list_of_df[1] <- list(df1); 
list_of_df["df20"] <- list(df2)

这样可以轻松遍历数据帧。如果你想要数据帧2的第4列,你只需要输入

list_of_df[[2]][,4]
# Same thing different code
list_of_df[["df20"]][,4]

双括号[[2]]为您提供存储在位置2的列表中的值(而不是[2],它为您提供包含值和元数据的列表)。下一个[,4]说从数据框我们得到的值,我们现在想得到第4列的每一行。请注意,这将输出向量而不是数据帧。

或循环:

for(df in list_of_df) {
  print(df)
}