伙计我有一个代码可以生成2列数据(例如Number,Median),这些数据是指特定的人...但我已经采样了7个人的样本 所以我基本上得到了这个输出:
[[1]
Number Median
1 5
2 3
.....
[[2]]
Number Median
1 6
2 4
....
[[3]]
Number Median
1 3
2 5
所以我基本上得到了这个输出....直到[[7]] 我尝试使用此代码在Excel中传输此输出
write.csv(cbind(data),"data1.csv")
我得到这种类型的输出:
list(c(Median =.......It lists all the median on the rows
但我希望它保存数据,参考列中的'中位数'和'数字'NOT ROWS
如果我输入
write.csv(data,"data1.csv")
我收到错误
arguments imply differing number of rows: 157, 179, 178, 180
答案 0 :(得分:1)
正如Marius所说,你有一个list
data.frames
,无法写入.csv
文件。你需要这样做:
NewDataFrame <- do.call("rbind", YourList)
write.csv(NewDataFrame, "Data.csv")
do.call
从list
中获取每个元素,并将您告诉它的任何函数(在本例中为rbind
)应用于所有元素。
答案 1 :(得分:0)
以下是两个选项。两者都使用以下示例数据:
myList <- list(data.frame(matrix(1:4, ncol = 2)),
data.frame(matrix(3:10, ncol = 2)),
data.frame(matrix(11:14, ncol =2)))
myList
# [[1]]
# X1 X2
# 1 1 3
# 2 2 4
#
# [[2]]
# X1 X2
# 1 3 7
# 2 4 8
# 3 5 9
# 4 6 10
#
# [[3]]
# X1 X2
# 1 11 13
# 2 12 14
data.frame
list
s
sink("list_of_dataframes.csv", type="output")
invisible(lapply(myList, function(x) dput(write.csv(x))))
sink()
如果您在文本编辑器中打开生成的“list_of_dataframes.csv”文件,您将看到类似这样的内容。当您将其读入电子表格程序时,第一列将包含rownames并NULL
将每个data.frame
分开:
"","X1","X2"
"1",1,3
"2",2,4
NULL
"","X1","X2"
"1",3,7
"2",4,8
"3",5,9
"4",6,10
NULL
"","X1","X2"
"1",11,13
"2",12,14
NULL
cbind
版本,其中包含具有不同行数的绑定data.frame
。这是我写过的一个这样的功能。
cbind2 <- function(datalist) {
nrows <- max(sapply(datalist, nrow))
expandmyrows <- function(mydata, rowsneeded) {
temp1 = names(mydata)
rowsneeded = rowsneeded - nrow(mydata)
temp2 = setNames(data.frame(
matrix(rep(NA, length(temp1) * rowsneeded),
ncol = length(temp1))), temp1)
rbind(mydata, temp2)
}
do.call(cbind, lapply(datalist, expandmyrows, rowsneeded = nrows))
}
以下是该功能应用于您的列表:
cbind2(myList)
# X1 X2 X1 X2 X1 X2
# 1 1 3 3 7 11 13
# 2 2 4 4 8 12 14
# 3 NA NA 5 9 NA NA
# 4 NA NA 6 10 NA NA
您可以轻松地将该输出与write.csv
及相关功能一起使用。