[Rd] Help with "row.names = as.integer(c(NA, 5))" in file from dput

Mike Prager mike.prager at noaa.gov
Wed Feb 28 20:01:53 CET 2007


I am trying to understand why syntax used by dput() to write
rownames is valid (say, when read by dget()).  I ask this
because I desire to emulate its actions *reliably* in my For2R
routines, and I won't be comfortable until I understand what R
is doing.

Given data set "fred":

> fred
    id      var1
1 1991 0.4388587
2 1992 0.8772471
3 1993 0.6230486
4 1994 0.2340929
5 1995 0.5005605

we can try this--

> dput(ats, control = "all")
structure(list(id = c(1991, 1992, 1993, 1994, 1995), var1 =
c(0.4388587, 0.8772471, 0.6230486, 0.2340929, 0.5005605)),
.Names = c("id", "var1"), row.names = as.integer(c(NA, 5)),
class = "data.frame")

In the above result, why is the following part valid?

row.names = as.integer(c(NA, 5))

given that the length of the RHS expression is 2, while the
needed length is 5.

Moreover, the following doesn't work:

> row.names(fred) <- as.integer(c(NA,5))
Error in `row.names<-.data.frame`(`*tmp*`, value = c(NA, 5)) : 
        invalid 'row.names' length

Is there any reason why the expression

c(NA,5) 

is better here than the more natural

1:5 

here?

I will appreciate help from anyone with time to reply.

MHP

-- 
Mike Prager, NOAA, Beaufort, NC
* Opinions expressed are personal and not represented otherwise.
* Any use of tradenames does not constitute a NOAA endorsement.



More information about the R-devel mailing list