R中的数据框和列表有什么区别?

R 数据框列表有什么区别? 哪一个应该在什么时候使用? 哪个更容易循环?

确切的问题:我必须先存储3个字符串元素,比如“a”,“b”,“c”。 对于其中的每一个,我需要追加3个元素; 例如“a”,我必须添加“a1”,“a2”,“a3”。 后来我必须使用嵌套for循环来访问这些元素。

所以我很困惑使用数据框或列表或其他数据类型,我可以先存储然后追加(每列的类型)?

目前我遇到错误,比如“要替换的项目数量不是替换长度的倍数”


问题并不像有些人认为的那样愚蠢。 我知道很多人为这种差异而挣扎,以及在哪里使用什么。 总结:

列表是迄今为止R中最灵活的数据结构。它们可以看作是元素的集合,对每个元素的类,长度或结构没有任何限制。 唯一需要注意的是,你不要给两个元素同名。 这可能会导致很多混淆,R不会给出错误:

> X <- list(a=1,b=2,a=3)
> X$a
[1] 1

数据框也是列表,但它们有一些限制:

  • 您不能为两个不同的变量使用相同的名称
  • 数据帧的所有元素都是向量
  • 数据帧的所有元素都有相同的长度。
  • 由于这些限制和产生的二维结构,数据框可以模仿矩阵的一些行为。 您可以选择行并对行进行操作。 你不能用列表来做这件事,因为在那里没有定义一行。

    所有这一切意味着您应该为任何适合该二维结构的数据集使用数据框。 本质上,您使用任何数据集的数据框,其中一列与变量重合,一行与广义上的单一观察值一致。 对于所有其他结构,列表是要走的路。

    请注意,如果你想要一个嵌套结构,你必须使用列表。 由于列表元素可以是列表本身,所以可以创建非常灵活的结​​构化对象。


    看看这个例子:如果你使用apply而不是sapply来获得类 -

    apply(iris,2,class) #  function elements are rows or columns
    Sepal.Length  Sepal.Width Petal.Length  Petal.Width      Species 
    "character"  "character"  "character"  "character"  "character" 
    
    sapply(iris,class) # function elements are variables
    Sepal.Length  Sepal.Width Petal.Length  Petal.Width      Species 
    "numeric"    "numeric"    "numeric"    "numeric"     "factor" 
    
    链接地址: http://www.djcxy.com/p/24899.html

    上一篇: What is difference between dataframe and list in R?

    下一篇: break/exit script