我有一组数据框列表”181″,我想提取第二列并将其保存为CSV文件,并对其进行标记,这些数据框的标签分别是0,1,2,3,4,5,6。问题是我每个数据框的长度不同,我不知道在R中是否可以这样做!
回答:
这是一个低效但容易编写的解决方案(当你只需要输出一个短小的CSV文件时,效率并不重要)。它一次写一行数据框,假设数据框由列表l.df表示。
## 准备输出和输入。
#fn <- "temp.csv"
if(is.null(names(l.df))) names(l.df) <- 1:length(l.df)
## 遍历数据框。
#append <- FALSE
for (s in names(l.df)) {
#
# 为这一列创建一个一行数据框。
#
X <- data.frame(ID=s, as.list(l.df[[s]][[2]]))
#
# 将其追加到输出中。
#
write.table(X, file=fn, sep=",", row.names=FALSE, col.names=FALSE, append=append)
append <- TRUE
}
例如,我们可以准备一组包含随机条目的数据框:
set.seed(17)
l.df <- lapply(1+rpois(181, 5), function(n) data.frame(X=1:n, Y=round(rnorm(n),2)))
输出文件看起来像这样:
"1",0.37,1.61,0.02,0.51
"2",1.07,0.13,-0.55,0.34,2.24,0.41,0.26,0.13,-0.48,0.07,0.54
... (省略了177行)
"180",0.58,-1.5,1.85,-1.02
"181",-0.59,0.12,-0.38,-0.35,1.22,-0.63,0.81