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