Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于将多个数据帧写入R中的excel文件的循环_R - Fatal编程技术网

用于将多个数据帧写入R中的excel文件的循环

用于将多个数据帧写入R中的excel文件的循环,r,R,我一直在拆分数据帧并将它们写入R中的txt文件,但现在我发现它们需要写入xlsx文件。我安装了xlsx包并修改了我的循环,但它不再工作了。我得到“错误在[.default(点[[2L]],1L):下标超出范围” 以下是循环: trts<-vector("list", length=6) trt<-as.character(c("CC", "CCW", "C2", "S2", "PF", "P")) for(i in 1:6){ trts[[i]]<-co2[co2$trt =

我一直在拆分数据帧并将它们写入R中的txt文件,但现在我发现它们需要写入xlsx文件。我安装了xlsx包并修改了我的循环,但它不再工作了。我得到“错误在
[.default
(点[[2L]],1L):下标超出范围”

以下是循环:

trts<-vector("list", length=6)
trt<-as.character(c("CC", "CCW", "C2", "S2", "PF", "P"))

for(i in 1:6){
trts[[i]]<-co2[co2$trt == trt[i],]
  write.xlsx(trts[[i]], paste(trt[i], "CO2", "xlsx", sep="."))

trts为什么不将其作为CSV输出

#Read Data
co2 <- read.table("~/Observed COBS CO2.txt",
                                header=T, quote="\"")

#Output to CSV
apply(as.matrix(unique(co2$trt)),1,
      function(x){
        write.table(co2[co2$trt == x,],
                    paste(x, "co2",".csv",sep=""),
                    sep=",",row.names=F)}
      )
#读取数据

co2为什么不将其作为CSV输出

#Read Data
co2 <- read.table("~/Observed COBS CO2.txt",
                                header=T, quote="\"")

#Output to CSV
apply(as.matrix(unique(co2$trt)),1,
      function(x){
        write.table(co2[co2$trt == x,],
                    paste(x, "co2",".csv",sep=""),
                    sep=",",row.names=F)}
      )
#读取数据


co2实际问题是什么?对不起,我得到“错误在
[[.default
(dots[[2L]],1L]:下标超出范围”。通常情况下,如果您对
长度<7
列表执行类似
列表[[7]]
之类的操作,就会出现这种情况。请尝试添加
打印(I)
作为循环中的一行,看看你是否能找出问题出在哪一行。谢谢你的提示,@Senor O,但我不确定我是否明白打印的是什么。只是数字1、2、3。我原以为会增加到6。但在制作txt文件时,这个确切的代码是有效的,而不是excel文件。确切地说,如果是,则会增加到6我们的循环工作正常。现在您知道您的循环在
print(3)
print(4)
之间的某个时间停止工作。实际问题是什么?对不起,我收到了“Error in
[.default
(dots[[2L]],1L]:下标越界”。通常,如果您执行类似
List[[7]的操作,就会出现这种情况
查找长度<7
列表
或其他内容。尝试添加
打印(i)
作为循环中的一行,看看你是否能找出问题出在哪一行。谢谢你的提示,@Senor O,但我不确定我是否明白打印的是什么。只是数字1、2、3。我原以为会增加到6。但在制作txt文件时,这个确切的代码是有效的,而不是excel文件。确切地说,如果是,则会增加到6我们的循环工作正常。现在您知道您的循环在
print(3)
print(4)之间的某个时间停止工作
。我想是因为使用.csv的excel用户无法双击并打开它。他们必须通过额外的步骤告诉excel它是一个.csv。我将得到大约50个文件,所以我希望R可以让这个人的工作更顺利。不过,感谢您提供的非循环代码!双击
.csv文件只是以与任何Excel文件相同的方式打开。是的!这就是我所想的,但是我从R编写的其他.csv文件正在打开,我的所有文本都在第一列。我还没有运行你的代码,但我会尝试一下,看看它是否能解决我在尝试之前不知道的问题。xlsx.Yep!非常感谢!想知道我为什么会这样做n无论如何,使用.txt…如果有帮助,向上投票会有帮助。我想,因为使用.csv的人不能双击它并打开它。他们必须经过额外的步骤,告诉excel它是一个.csv。我会得到大约50个文件,所以我希望R能让这个人的事情更顺利。谢谢你的帮助非循环代码!双击
.csv
文件打开的方式与任何Excel文件打开的方式相同。是的!这是我的想法,但我从R编写的其他.csv文件打开时,所有文本都在第一列。我还没有运行你的代码,但我会尝试一下,看看它是否能解决我以前不知道的问题我试过了.xlsx.yesp!非常感谢!不知道为什么我一直在使用.txt…如果它有用的话,向上投票会有帮助。