On Thu, 2007-09-27 at 17:16 +0200, Alfredo Alessandrini
wrote:> Hi everybody,
>
> I've a data.frame "d" like this:
>
> 0 2 4 6 8 10 12 14 16 X0 X2
> X4
> 1945 350 NA NA NA NA NA NA NA NA 0.3848451 0.0000000 0.0000000
> 1946 408 NA NA NA NA NA NA NA NA 1.4202009 0.0000000 0.0000000
> 1947 511 NA NA NA NA NA NA NA NA 3.2540522 0.0000000 0.0000000
> 1948 342 215 NA NA NA NA NA NA NA 3.0943431 0.1452201 0.0000000
> 1949 217 259 NA NA NA NA NA NA NA 2.3444544 0.5606204 0.0000000
> 1950 204 322 NA NA NA NA NA NA NA 2.4738157 1.2847229 0.0000000
> 1951 310 369 NA NA NA NA NA NA NA 4.2598111 2.2732847 0.0000000
> 1952 284 254 204 NA NA NA NA NA NA 4.4325108 2.0619404 0.1307405
> 1953 437 390 158 NA NA NA NA NA NA 7.8102915 3.9550138 0.2809463
> 1954 444 356 343 NA NA NA NA NA NA 9.1642771 4.4445494 1.1497632
> 1955 299 250 217 NA NA NA NA NA NA 6.8693657 3.5971236 1.1091676
> 1956 318 280 161 NA NA NA NA NA NA 7.9222799 4.4949908 1.0141218
> 1957 220 216 169 NA NA NA NA NA NA 5.8526614 3.8041420 1.2397196
> 1958 208 189 133 NA NA NA NA NA NA 5.8131025 3.5690974 1.1018225
> 1959 247 228 127 NA NA NA NA NA NA 7.2561271 4.6042679 1.1558516
> 1960 283 259 131 NA NA NA NA NA NA 8.7849078 5.6265453 1.2984360
> 1961 304 236 135 NA NA NA NA NA NA 9.9974023 5.4938916 1.4508974
> 1962 215 150 96 NA NA NA NA NA NA 7.4210859 3.6737784 1.1014173
> 1963 242 183 122 NA NA NA NA NA NA 8.7004775 4.6734552 1.4832716
> 1964 250 194 170 230 NA NA NA NA NA 9.3745125 5.1841431 2.2228025
> 1965 201 163 164 343 NA NA NA NA NA 7.8218965 4.5385615 2.3164345
>
> And another "X" like this :
>
> [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12]
> [1,] NA NA NA NA NA NA NA NA NA NA NA NA
> [2,] NA NA NA NA NA NA NA NA NA NA NA NA
> [3,] NA NA NA NA NA NA NA NA NA NA NA NA
> [4,] NA NA NA NA NA NA NA NA NA NA NA NA
> [5,] NA NA NA NA NA NA NA NA NA NA NA NA
>
>
> If I try to add X to d, I've an error like this:
>
> rbind(X,d)
> Errore in match.names(clabs, names(xi)) : names do not match previous names
>
> Why?
In ?rbind under data frame methods, it clearly states:
The rbind data frame method first drops all zero-column and zero-row
arguments. (If that leaves none, it returns the first argument with
columns otherwise a zero-column zero-row data frame.) It then takes the
classes of the columns from the first data frame, and matches columns by
name (rather than by position).
You appear to be rbind()ing a matrix "X" to the data frame
"d". In that
case, the data frame method is used and since "X" does not have any
column names, rbind cannot match the columns in the two objects and you
get the error message you see.
Try this instead:
# set X's colnames to match d's
colnames(X) <- colnames(d)
# Now rbind()
rbind(d, X)
HTH,
Marc Schwartz