An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20130208/fb877ad8/attachment.pl>
write.table and append
5 messages · Brian Smith, Louis Aslett, Ben Tupper
I believe your problem stems from using ifelse() actually ... it
requires the statements which it runs to return a value with the same
shape as the test, which write.table() isn't doing.
Just change it to a regular if with an else and you'll be fine:
for(i in 1:2){
mat <- data.frame(sample(1:30,9),3,3)
colnames(mat) <- letters[1:3]
if(i == 1){
write.table(mat,paste('test.txt',sep=''),row.names=F)
} else {
write.table(mat,paste('test.txt',sep=''),row.names=F,col.names=F,append=TRUE)
}
}
Hope that helps,
Louis
On Fri, Feb 8, 2013 at 2:40 PM, Brian Smith <bsmith030465 at gmail.com> wrote:
Hi,
I am trying to append tables on file with this sample code:
for(i in 1:2){
mat <- data.frame(sample(1:30,9),3,3)
colnames(mat) <- letters[1:3]
ifelse(i ==
1,write.table(mat,paste('test.txt',sep=''),row.names=F),
write.table(mat,paste('test.txt',sep=''),row.names=F,col.names=F,append=TRUE))
}
However, this gives an error:
"Error in ifelse(i == 1, write.table(mat, paste("test.txt", sep = ""), :
replacement has length zero"
- Should I be passing in some other parameters or using a different
function to append tables to file?
thanks!
[[alternative HTML version deleted]]
______________________________________________ R-help at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.
An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20130208/3bee68df/attachment.pl>
Hi,
On Feb 8, 2013, at 9:40 AM, Brian Smith wrote:
Hi,
I am trying to append tables on file with this sample code:
for(i in 1:2){
mat <- data.frame(sample(1:30,9),3,3)
colnames(mat) <- letters[1:3]
ifelse(i ==
1,write.table(mat,paste('test.txt',sep=''),row.names=F),
write.table(mat,paste('test.txt',sep=''),row.names=F,col.names=F,append=TRUE))
}
However, this gives an error:
"Error in ifelse(i == 1, write.table(mat, paste("test.txt", sep = ""), :
replacement has length zero"
- Should I be passing in some other parameters or using a different
function to append tables to file?
You might try assign each parameter based upon the value of i instead of trying to manage two different calls to write.table through an ifelse function. ifelse doesn't seem to like the value returned by write.table (NULL). Here's a simply example...
ok <- ifelse( TRUE, NULL, NULL)
Error in ifelse(TRUE, NULL, NULL) : replacement has length zero
ok <- ifelse( FALSE, NULL, NULL)
Error in ifelse(FALSE, NULL, NULL) : replacement has length zero
I think that is what the warning in ?ifelse is alluding to. You would only know that write.table returns NULL if you have bitten by it before. I have bite marks.
for(i in 1:2){
mat <- data.frame(sample(1:30,9),3,3)
colnames(mat) <- letters[1:3]
write.table(mat, file = "test.txt",
row.names = FALSE,
col.names = (i == 1),
append = (i != 1) )
}
Cheers,
Ben
thanks! [[alternative HTML version deleted]]
______________________________________________ R-help at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.
Ben Tupper Bigelow Laboratory for Ocean Sciences 60 Bigelow Drive, P.O. Box 380 East Boothbay, Maine 04544 http://www.bigelow.org
An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20130208/60c442f5/attachment.pl>