'writing a data.frame using cat
How can I add/append data.frame abc to the text file that I have opened previously. I am writing some important information to that file and then I want to append that data.frame below that information. I get an error when I try to write the data.frame abc using cat.
fileConn<-file("metadata.txt","w+")
smoke <- matrix(c(51,43,22,92,28,21,68,22,9),ncol=3,byrow=TRUE)
smoke <- as.data.frame(smoke)
table <- sapply (smoke, class)
abc <- data.frame(nm = names(smoke), cl = sapply(unname(smoke), class))
cat("some imp info","\n", file=fileConn)
cat(abc,"\n", file=fileConn)
close(fileConn)
class(abc)
Solution 1:[1]
Just use the standard tools for writing data.frame's, i.e. write.table:
write.table(abc, 'yourfile', append=TRUE) # plus whatever additional params
Solution 2:[2]
Try this
capture.output(abc, file = fileConn)
Solution 3:[3]
To make sure the output is readable, you could use also knitr::kable(). This will print your table as character, which has the advantage that you can embed it directly within the cat() call. It has lso several printing options (digits, align, row.names) etc that make it easy to control for how your table is printed:
tab <- knitr::kable(head(swiss))
cat("This is my file:",
"Some important note about it",
tab,
sep="\n")
#> This is my file:
#> Some important note about it
#> | | Fertility| Agriculture| Examination| Education| Catholic| Infant.Mortality|
#> |:------------|---------:|-----------:|-----------:|---------:|--------:|----------------:|
#> |Courtelary | 80.2| 17.0| 15| 12| 9.96| 22.2|
#> |Delemont | 83.1| 45.1| 6| 9| 84.84| 22.2|
#> |Franches-Mnt | 92.5| 39.7| 5| 5| 93.40| 20.2|
#> |Moutier | 85.8| 36.5| 12| 7| 33.77| 20.3|
#> |Neuveville | 76.9| 43.5| 17| 15| 5.16| 20.6|
#> |Porrentruy | 76.1| 35.3| 9| 7| 90.57| 26.6|
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | eddi |
| Solution 2 | lukeA |
| Solution 3 | Matifou |
