Skip to content

How to write a Surv object to a csv-file?

5 messages · David Winsemius, Heinz Tuechler, Charles C. Berry

#
Dear All,

trying to write a data.frame, containing Surv objects to a csv-file I get
"Error in dimnames(X) <- list(dn[[1L]], unlist(collabs, use.names = FALSE)) :
   length of 'dimnames' [2] not equal to array extent".

See example below.

May be, I overlooked something, but I expected 
that also data.frames containing Surv objects may be written to csv files.

Is there a better way to write to csv files?

Thanks,

Heinz T?chler



###   write Surv-object in csv-file
library(survival)
## create example data
soa <- Surv(1:5, c(0, 0, 1, 0, 1))
df.soa <- data.frame(soa)
write.csv(df.soa, 'df.soa.csv')    ## works as I expected
read.csv('df.soa.csv')	            ## works as I expected

df.soa2 <- data.frame(soa, soa2=soa)
write.csv(df.soa2, 'df.soa2.csv')  ## works as I expected
read.csv('df.soa2.csv')            ## works as I expected

char1 <- letters[1:5]
df.soac <- data.frame(soa, char1)
write.csv(df.soac, 'df.soac.csv')  ## generates the following error message:

Error in dimnames(X) <- list(dn[[1L]], unlist(collabs, use.names = FALSE)) :
   length of 'dimnames' [2] not equal to array extent

df.csoa <- data.frame(char1, soa)
write.csv(df.csoa, 'df.soac.csv')  ## generates the following error message:

Error in dimnames(X) <- list(dn[[1L]], unlist(collabs, use.names = FALSE)) :
   length of 'dimnames' [2] not equal to array extent


platform       i386-pc-mingw32
arch           i386
os             mingw32
system         i386, mingw32
status         Patched
major          2
minor          8.0
year           2008
month          11
day            10
svn rev        46884
language       R
version.string R version 2.8.0 Patched (2008-11-10 r46884)
 > sessionInfo()
R version 2.8.0 Patched (2008-11-10 r46884)
i386-pc-mingw32

locale:
LC_COLLATE=German_Austria.1252;LC_CTYPE=German_Austria.1252;LC_MONETARY=German_Austria.1252;LC_NUMERIC=C;LC_TIME=German_Austria.1252

attached base packages:
[1] splines   stats     graphics  grDevices utils     datasets  methods
[8] base

other attached packages:
[1] survival_2.34-1
#
On Dec 19, 2008, at 2:04 PM, Heinz Tuechler wrote:

            
Yes, if the goal is creating an ASCII structure that can be recovered  
by an R interpreter:

?dput
?dget

 > dput(df.soac, "test")
 > copy.df.soac <- dget("test")
 > all.equal(df.soac, copy.df.soac)

  Doesn't give you a result that you would want to read with Excel,  
but that does not appear to be your goal. You can examine it with a  
text editor.
#
Dear David!

Thank you for your response. I like csv files, 
because in that case I can easily compare 
different versions of similar data.frames. 
Similar in this case means that I may add a 
column or change some transformation command for 
one column. With dput it's rather difficult, and 
when I tried the compare package, I had no 
success comparing data.frames containing Surv objects.

Thanks again

Heinz
At 22:31 19.12.2008, David Winsemius wrote:

            
#
On Fri, 19 Dec 2008, Heinz Tuechler wrote:

            
Heinz,

Is this good enough?
X soa.time soa.status char1
1 1        1          0     1
2 2        2          0     2
3 3        3          1     3
4 4        4          0     4
5 5        5          1     5
The bug seems to be in as.matrix.data.frame.

HTH,

Chuck
Charles C. Berry                            (858) 534-2098
                                             Dept of Family/Preventive Medicine
E mailto:cberry at tajo.ucsd.edu	            UC San Diego
http://famprevmed.ucsd.edu/faculty/cberry/  La Jolla, San Diego 92093-0901
#
Dear Charles,

yes, your solution does what I need.
Maybe, it offers also a way to use the compare package with Surv objects.

Thank you,

Heinz
At 23:30 19.12.2008, Charles C. Berry wrote: