R创建一个空的data.frame

示例

Adata.frame是一种特殊的列表:它是矩形。列表的每个元素(列)具有相同的长度,并且每一行都有一个“行名”。每个列都有其自己的类,但是一个列的类可以与另一列的类不同(与矩阵不同,在矩阵中,所有元素都必须具有相同的类)。

原则上,adata.frame可以没有行也没有列:

> structure(list(character()), class = "data.frame")

NULL

<0 rows> (or 0-length row.names)

但这是不寻常的。data.frame有许多列和许多行是更常见的。这是一个data.frame具有三行两列的(a数字类和b字符类):

> structure(list(a = 1:3, b = letters[1:3]), class = "data.frame")

[1] a b

<0 rows> (or 0-length row.names)

为了data.frame打印,我们将需要提供一些行名。在这里,我们仅使用数字1:3:

> structure(list(a = 1:3, b = letters[1:3]), class = "data.frame",row.names= 1:3)

  a b

1 1 a

2 2 b

3 3 c

现在很明显,我们有一个data.frame3行2列的。您可以检查此使用nrow(),ncol()以及dim():

> x <- structure(list(a = numeric(3), b = character(3)), class = "data.frame",row.names= 1:3)

> nrow(x)

[1] 3

> ncol(x)

[1] 2

> dim(x)

[1] 3 2

R提供了另外两个structure()可用于创建data.frame的函数(之外)。第一个直观地称为。它检查以确保您提供的列名有效,列表元素的长度均相同,并提供一些自动生成的行名。这意味着现在的输出可能始终与您期望的一样:data.frame()data.frame()

> str(data.frame("a a a" = numeric(3), "b-b-b" = character(3)))

'data.frame':   3 obs. of  2 variables:

 $ a.a.a: num  0 0 0

 $ b.b.b: Factor w/ 1 level "": 1 1 1

另一个功能称为。通过将其运行,可以将非a的对象强制为a 。例如,考虑一个矩阵:as.data.frame()data.framedata.framedata.frame()

> m <- matrix(letters[1:9], nrow = 3)

> m

     [,1] [,2] [,3]

[1,] "a"  "d"  "g" 

[2,] "b"  "e"  "h" 

[3,] "c"  "f"  "i"

结果:

> as.data.frame(m)

  V1 V2 V3

1  a  d  g

2  b  e  h

3  c  f  i

> str(as.data.frame(m))

'data.frame':   3 obs. of  3 variables:

 $ V1: Factor w/ 3 levels "a","b","c": 1 2 3

 $ V2: Factor w/ 3 levels "d","e","f": 1 2 3

 $ V3: Factor w/ 3 levels "g","h","i": 1 2 3

           

以上是 R创建一个空的data.frame 的全部内容, 来源链接: utcz.com/z/352379.html

回到顶部