List 我可以使用R中的列表作为列数不等的数据帧的代理吗?

List 我可以使用R中的列表作为列数不等的数据帧的代理吗?,list,r,data-structures,List,R,Data Structures,就R中的数据帧而言,我的理解是它必须是矩形的。不可能有列长度不等的数据帧。我可以使用R中的列表s来实现这一点吗?这种方法的优缺点是什么?您可以使用列表来存储任何您想要的内容,甚至是数据帧或其他列表!您确实可以指定不同的长度向量,甚至可以指定完全不同的对象。它提供了与数据帧相同的功能,您可以使用美元符号进行索引: > fooList <- list(a=1:12, b=1:11, c=1:10) > fooList$a [1] 1 2 3 4 5 6 7 8

R
中的数据帧而言,我的理解是它必须是矩形的。不可能有列长度不等的数据帧。我可以使用
R
中的
列表
s来实现这一点吗?这种方法的优缺点是什么?

您可以使用列表来存储任何您想要的内容,甚至是数据帧或其他列表!您确实可以指定不同的长度向量,甚至可以指定完全不同的对象。它提供了与数据帧相同的功能,您可以使用美元符号进行索引:

> fooList <- list(a=1:12, b=1:11, c=1:10)
> fooList$a
 [1]  1  2  3  4  5  6  7  8  9 10 11 12
> fooDF <- data.frame(a=1:10, b=1:10, c=1:10)
> fooDF$a
 [1]  1  2  3  4  5  6  7  8  9 10
以及结构和打印方法:

> fooList


$a
 [1]  1  2  3  4  5  6  7  8  9 10 11 12

$b
 [1]  1  2  3  4  5  6  7  8  9 10 11

$c
 [1]  1  2  3  4  5  6  7  8  9 10

> fooDF
    a  b  c
1   1  1  1
2   2  2  2
3   3  3  3
4   4  4  4
5   5  5  5
6   6  6  6
7   7  7  7
8   8  8  8
9   9  9  9
10 10 10 10
简单地说,数据帧是一个矩阵,是一个容器的列表

一个列表意味着把各种各样的东西放在一起,数据框是常用的数据格式(每行一个主题/案例,每列一个变量)。它被用于很多分析中,允许对一个主题的分数进行索引,可以更容易地转换和其他事情

但是,如果列的长度不等,那么我怀疑数据中的每一行都类似于主题/案例。在这种情况下,我想您不需要太多数据帧的功能


如果每一行都类似于主题/案例,那么您应该使用
NA
查找任何缺少的值,并使用数据框。

数据框实际上不是矩阵。它更像是一种特殊的列表,具有一些类似于矩阵的属性。您可以通过
as.list(fooDF)
来说明这一点。它也保留其类似于列表的属性
fooDF[n]
返回包含第n个元素的较小数据框,而
fooDF[[n]]
将基础列作为向量返回您也可以使用列表作为数据框列。
> fooList


$a
 [1]  1  2  3  4  5  6  7  8  9 10 11 12

$b
 [1]  1  2  3  4  5  6  7  8  9 10 11

$c
 [1]  1  2  3  4  5  6  7  8  9 10

> fooDF
    a  b  c
1   1  1  1
2   2  2  2
3   3  3  3
4   4  4  4
5   5  5  5
6   6  6  6
7   7  7  7
8   8  8  8
9   9  9  9
10 10 10 10