【问题标题】:What does df[i] do? [duplicate]df[i] 是做什么的? [复制]
【发布时间】:2017-05-06 03:13:48
【问题描述】:

我一直在教的是向量是一维的,而数据框是二维的。因此,向量索引需要一个数字 - 例如,v[1] - 而数据帧索引需要两个数字 - 例如,df[1, 1]

我从https://stackoverflow.com/a/13635514/3625022 了解到,例如df[1] 实际上显示了df 的第一列。例如,

> x <- data.frame(x = 1, y = 2, z = 3)
> x[1]
  x
1 1
> x[,1]
[1] 1

我注意到它们略有不同,因为x[,1] 可能仅指第一列中的条目向量,而x[1] 包括行名和列名。

无论如何,这与我一直在说明的信息相矛盾 - 数据帧需要两个数字进行索引。这个说法不正确吗?如果正确,如何向R 的新手解释为什么x[1] 给出x 的第一列?

【问题讨论】:

  • data.frame 是一个继承自类列表的类。因此,列表子集适用于 data.frames。
  • R 中的一切都是一维的(据我所知)。 Data.frames 是列的列表;矩阵是形状看起来像别的东西的向量;等
  • @Frank 矩阵是具有 dim 属性的向量。不涉及“形状”。
  • @Frank 如果 OP 在教学,了解 R 数据结构的内部实现将是有利的。
  • intro R manual 非常枯燥,您可能已经知道其中的大部分内容,但其中充满了有用的见解。

标签: r


【解决方案1】:

数据框是列表。可以肯定的是,这是一种特殊类型的列表,但它们是列表。 x[1] 是列表的第一个元素。 x[[1]] 是列表第一个元素的 contents,当列表是数据框时,x[,1] 也是如此。将输出与显式列表进行比较:

> x <- data.frame(x = 1, y = 2, z = 3)
> x[1]
  x
1 1
> x[[1]]
[1] 1
> x[,1]
[1] 1
> y = list(x=1, y=2, z=3)
> y[1]
$x
[1] 1

> y[[1]]
[1] 1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-17
    • 2015-08-17
    • 2011-05-04
    • 2013-02-17
    • 2021-11-03
    • 2014-06-24
    • 1970-01-01
    • 2015-06-17
    相关资源
    最近更新 更多