Hi>
> Hi all
>
> I want to use function of is.list and is.data.frame in if-else
statement,> but I get a trouble. To replicate this trouble, I run codes like that:
>
> > set.seed(123)
> > x <- rnorm(100)
> > x <- data.frame(matrix(x, 10, 10))
> > class(x)
> [1] "data.frame"
> > is.list(x)
> [1] TRUE
> > is.data.frame(x)
> [1] TRUE
>
> > version
> _
> platform i386-pc-mingw32
> arch i386
> os mingw32
> system i386, mingw32
> status
> major 2
> minor 13.1
> year 2011
> month 07
> day 08
> svn rev 56322
> language R
> version.string R version 2.13.1 (2011-07-08)
>
>
> The class of x is data frame, but when I use is.list, I also get a TRUE
> result. Why does this happen?
R-intro document which shall be included in any installation tells you
about data frame
6.3 Data frames
A data frame is a list with class "data.frame". There are restrictions
on
lists that may be made into data frames, namely
The components must be vectors (numeric, character, or logical), factors,
numeric matrices, lists, or other data frames.
Matrices, lists, and data frames provide as many variables to the new data
frame as they have columns, elements, or variables, respectively.
Numeric vectors, logicals and factors are included as is, and character
vectors are coerced to be factors, whose levels are the unique values
appearing in the vector.
Vector structures appearing as variables of the data frame must all have
the same length, and matrix structures must all have the same row size.
Regards
Petr
>
> Lian Peng
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
http://www.R-project.org/posting-guide.html> and provide commented, minimal, self-contained, reproducible code.