我创建了一个由年份分隔的大量元素列表,如下所示:
1961: 'data.frame': 365 obs of 4 variables:
..$ Year: int [1:365]
..$ Rainfall: int [1:365]
..$ PET: int [1:365]
..$ MeanT: int [1:365]
1962: 'data.frame': 365 obs of 4 variables:
..$ Year: int [1:365]
..$ Rainfall: int [1:365]
..$ PET: int [1:365]
..$ MeanT: int [1:365]
...一直到2007年。我想为每年创建单独的文本文件,以便在另一个程序中使用,包含没有列标题的四列数据。
在excel中执行此操作会很简单但我需要处理大量数据,并且希望能够使用R来自动执行该过程并节省大量时间。
答案 0 :(得分:2)
在与Pad聊天之后,在reddit上,我们找到了一个解决方案,它基于akrun和Pierre的上述评论:
lapply(names(lst),function(x) write.table(cbind(c(1:dim(lst[[x]])[1]), lst[[x]][-1]), file = paste0('',x,'.txt'), quote = F, row.names = F, col.names = F, sep = ","))
除了编写文件之外,代码还会删除第一列,用1-365中的数字替换它(或者将数字替换为提供的data.frame中的行数。)
答案 1 :(得分:1)
我知道它是R异端,但即使它可能运行得慢,for循环也可以很容易地从列表项名称中获取文件名:
for(i in 1:length(mylist)){
filename <- paste0(names(mylist)[i],".csv")
write.table(mylist[[i]], file=filename, row.names = FALSE, col.names = FALSE, sep=",")
}