Reputation: 505
Why doesn't this write out the csv as (4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4) (when viewed in Notepad)
results <- data.frame(Answer= rep(4,16))
write.table(results$Answer, file = "paul.csv", row.names=FALSE, col.names=FALSE, sep=",")
It's as if its ignored the Sep argument..? Paul
Upvotes: 0
Views: 4170
Reputation: 76683
There are two simple possibilities.
One, use argument eol = ","
like I have said in my comment above. The problem with this method is that it will include an extra ","
at the end of the line, since write.table
always includes an ending newline.
write.table(results$Answer, file = "paul.csv", row.names = FALSE, col.names = FALSE, eol = ",")
The other method is to use cat
.
cat(results$Answer, file = "paul.csv", sep = ",")
I believe this is the one you want.
Upvotes: 1
Reputation: 333
You should not define variable as one column if you want sep
to work because sep = ...
works with columns. This is one way you can do it:
results <- data.frame(t(rep(4,16)))
write.table(results, file = "paul.csv", row.names=FALSE, col.names=FALSE, sep=",")
Upvotes: 3
Reputation: 2254
You have specified a vertical vector. When a vertical vector is being written, each vector element is written into an own line:
> results <- data.frame(Answer= rep(4,16))
> dim(results)
[1] 16 1
> results
Answer
1 4
2 4
3 4
4 4
5 4
6 4
7 4
8 4
9 4
10 4
11 4
12 4
13 4
14 4
15 4
16 4
If you want to write the vector in a single line, you may transpose a vertical vector into a horizontal vector using function t( )
:
> results <- t(data.frame(Answer= rep(4,16)))
> dim(results)
[1] 1 16
> results
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14] [,15] [,16]
Answer 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
Then writing the data into a file:
> results <- t(data.frame(Answer= rep(4,16)))
> write.table(results$Answer, file = "paul.csv", row.names=FALSE, col.names=FALSE, sep=",")
will yield the following contents:
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4
Upvotes: 0