在数据框列表中写入不同年份以使用R分隔文本文件

时间:2015-08-04 15:20:16

标签: r writing

我创建了一个由年份分隔的大量元素列表,如下所示:

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来自动执行该过程并节省大量时间。

2 个答案:

答案 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=",")
}