[Rd] corrupt data frame: columns will be truncated or padded with NAs in: format.data.frame(x, digits = digits)

From: Gorjanc Gregor <Gregor.Gorjanc_at_bfro.uni-lj.si>
Date: Mon 14 Feb 2005 - 12:54:53 EST


Hello!

I posted on saturday mail with the same subject on r-help seeking for help in my work, but now I realized that this list is more appropriate for this. I think I found I bug. Bellow are comments and reproducible examples:

# Create a data frame

(tmp <- data.frame(y1=1:4, f1=factor(c("A", "B", "C", "D"))))   y1 f1
1 1 A
2 2 B
3 3 C
4 4 D

# Add new column, which is not full (missing some data for last
# records)

tmp[1:2, "y2"] <- 2
tmp
  y1 f1 y2
1 1 A 2
2 2 B 2
3 3 C <NA>
4 4 D <NA>
Warning message:
corrupt data frame: columns will be truncated or padded with NAs in: format.data.frame(x, digits = digits)

# Why did I get corrupted data frame?

# Add new factor column, which is not full (missing some data for last
# records)

tmp[1:2, "f2"] <- tmp[1:2, "f1"]
tmp
  y1 f1 y2 f2
1 1 A 2 1
2 2 B 2 2
3 3 C <NA> <NA>
4 4 D <NA> <NA>
Warning message:
corrupt data frame: columns will be truncated or padded with NAs in: format.data.frame(x, digits = digits)

# New column should have class factor, but got somehow converted to integer
class(tmp$f2)
[1] "integer"

# If new column is completely full, everything is OK
> tmp$f3 <- tmp$f1
> tmp
  y1 f1 y2 f2 f3
1 1 A 2 1 A
2 2 B 2 2 B
3 3 C <NA> <NA> C

4 4 D <NA> <NA> D
Warning message:
corrupt data frame: columns will be truncated or padded with NAs in: format.data.frame(x, digits = digits)

# Let's go further and try to convert one of new numeric column
# to factor

tmp$y2 <- factor(tmp$y2, labels="x")
tmp
  y1 f1 y2 f2 f3
1 1 A x 1 A
2 2 B x 2 B
3 3 C x <NA> C
4 4 D x <NA> D
Warning message:
corrupt data frame: columns will be truncated or padded with NAs in: format.data.frame(x, digits = digits)

# Why did also NAs get converted to level x?

# Let's continue and add additional column, which is again not
# full, but missing some data for first records
tmp[3:4, "y3"] <- 1
tmp
  y1 f1 y2 f2 f3 y3
1 1 A x 1 A NA
2 2 B x 2 B NA
3 3 C x <NA> C 1

4 4 D x <NA> D 1
Warning message:
corrupt data frame: columns will be truncated or padded with NAs in: format.data.frame(x, digits = digits)

# Notice the difference between <NA> in previous example and
# NA in current one.

# Try to convert this to factor

tmp$y3 <- factor(tmp$y3, labels="y")
tmp
  y1 f1 y2 f2 f3 y3
1 1 A x 1 A <NA>
2 2 B x 2 B <NA>
3 3 C x <NA> C y
4 4 D x <NA> D y
Warning message:
corrupt data frame: columns will be truncated or padded with NAs in: format.data.frame(x, digits = digits)

# Works as expected.
# My configuration:

Version:
 platform = i386-pc-mingw32
 arch = i386
 os = mingw32
 system = i386, mingw32
 status =
 major = 2
 minor = 0.1
 year = 2004
 month = 11
 day = 15
 language = R

Windows XP Professional (build 2600) Service Pack 0.0

--
Lep pozdrav / With regards,
    Gregor GORJANC

---------------------------------------------------------------
University of Ljubljana
Biotechnical Faculty       URI: http://www.bfro.uni-lj.si
Zootechnical Department    email: gregor.gorjanc <at> bfro.uni-lj.si
Groblje 3                  tel: +386 (0)1 72 17 861
SI-1230 Domzale            fax: +386 (0)1 72 17 888
Slovenia

______________________________________________
R-devel@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
Received on Mon Feb 14 12:01:46 2005

This archive was generated by hypermail 2.1.8 : Fri 18 Mar 2005 - 09:02:51 EST