I have sample data like this
df <- data.frame(name = rep(letters[1:7], each = 24), salary = runif(24*7, 100, 200))
I wanted to separate each name with their salaries
lst <- tapply(df$salary, df$name, matrix, nrow = 4, byrow = TRUE)
Now I want to write all these 7 m开发者_JAVA百科atrices to 7 different text files, It is working only for a single matrix at a time. I tried to put in a for loop but is not working
for (i in 1:7)
{
write.table(lst[i], ".txt", col.names = FALSE, row.names = FALSE, sep = "\t", quote = FALSE)
}
Can any one suggest for the modifications in the for loop?
Given your lst
, the following will write this out to a series of TXT files with names equal to the name of lst
, plus .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)
To modify your for()
loop, try:
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)
}
The problem was trying to or assuming R would paste together the filenames for you.
Try this,
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)
}
精彩评论