在全局环境中存储在循环中创建的数据?

Storing data created in a loop in global environment?

我是 R 的新手,我有一个更大的数据框,其中包含 58 个观察值,我想将其分解为 29 个数据框,包括第 1&2、3&4 列等。

我尝试了以下方法

for (i in 1:29){
 x <- LCMS[,((i*2)-1):(i*2)]
 assign("dfi",x,envir=globalenv())
 }

,并且没有收到错误消息,但除了 "dfi" 之外什么也没有保存,这是最后一次迭代的数据帧。

我猜想问题是"dfi"是作为名称输入的,所以它没有用于迭代过程?但是我该如何规避呢?

你这里有两个问题。

首先,assign 会将对象保存到环境中,而不是作为计算机中的文件。要在您的计算机中写入文件,您可以使用 "write" 函数(csv、xlsx,无论您想要什么格式,都有一个函数)。

其次,"dfi" 没有变化,因为 i 在引号内,使其成为 "dfi" 字符串的一部分,而不是数字对象。如果要创建名为df1、df2、df3等的文件,则需要使用函数"paste"。

我写了一些代码作为例子,希望对你有帮助!

    for(i in 1:29) {
       new.data <- LCMS[,((i*2)-1):(i*2)]
       df.name <- paste("LCMS_pair",i,".xlsx",sep = "") 
       write.xlsx(new.data,df.name,row.names = F) }