我在R中为这个问题奋斗了一段时间:
假设我有一个for循环,它运行在9个数据文件上。在这个循环中,我从较长的向量中提取一个短向量。很简单。
之后,在循环过程中,我希望用新提取的短向量填充矩阵,并将矩阵保存到文件中。不容易,因为没有一个短向量有相同的长度。为了避免这个问题,我尝试直接将向量保存(仍在循环中),直接保存在一个.csv文件中,其中包含write.table()和append=TRUE,但是当我希望有9列时,R会将所有9个向量附加在同一列中。像by.column=TRUE这样的东西存在吗?
无论如何,我只希望在数据文件中的9列中有我的9个短向量。在我看来,我对第二个解决方案的看法并不过分。
有谁知道如何最终完成这个小程序吗?我会非常感激的。
谢谢你抽出时间,米歇尔
发布于 2012-09-28 17:05:13
我建议您稍微调整一下工作流程,这样做如下:
write.table或write.csv的单次调用,才能写出结果表。下面是一个例子:
## Set up your for() loop or lapply() call so that it returns a list structure
## like 'l'
l <- list(a=1:9, b=1:2, c=1:5)
## Make a matrix from the list, with shorter vectors filled out with ""s
n <- max(sapply(l, length))
ll <- lapply(l, function(X) {
c(as.character(X), rep("", times = n - length(X)))
})
out <- do.call(cbind, ll)
## Then output it however you'd like. (Here are three options.)
# write.csv(out, file="summary.csv")
# write.csv(out, file="summary.csv", quote=FALSE)
# write.table(out, file="summary.txt", row.names=FALSE, quote=FALSE, sep="\t")https://stackoverflow.com/questions/12643674
复制相似问题