在全局环境中存储在循环中创建的数据?
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) }
我是 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) }