我有这样的样本数据
df <- data.frame(name = rep(letters[1:7], each = 24), salary = runif(24*7, 100, 200))
我想将每个名字与工资分开
lst <- tapply(df$salary, df$name, matrix, nrow = 4, byrow = TRUE)
现在我想将所有这7个矩阵写入7个不同的文本文件,它一次只能用于单个矩阵。我试图放入一个for循环但是没有工作
for (i in 1:7)
{
write.table(lst[i], ".txt", col.names = FALSE, row.names = FALSE, sep = "\t", quote = FALSE)
}
任何人都可以建议for循环中的修改吗?
答案 0 :(得分:15)
鉴于您的lst
,以下内容会将此内容写入一系列名称等于lst
加上.txt
的TXT文件中:
lapply(names(lst),
function(x, lst) write.table(lst[[x]], paste(x, ".txt", sep = ""),
col.names=FALSE, row.names=FALSE, sep="\t",
quote=FALSE),
lst)
要修改for()
循环,请尝试:
for(i in seq_along(lst)) {
write.table(lst[[i]], paste(names(lst)[i], ".txt", sep = ""),
col.names = FALSE, row.names = FALSE, sep = "\t", quote = FALSE)
}
问题是试图或假设R会为你粘贴文件名。
答案 1 :(得分:8)
试试这个,
for (ii in names(lst)){
filename <- paste(ii, ".txt", sep="")
write.table(lst[[ii]], filename, col.names=FALSE,row.names=FALSE,sep="\t",quote=FALSE)
}