为什么我可以使用3维在R中对数据帧进行子集化?

最近,我正在学习R的数据框。您知道我们可以像下面这样子集R的data.frame:

foo  <- data.frame(mpg[1:5, ])
foo[1:2,3:4]
>#       displ  year
>#  1      1.8  1999
>#  2      1.8  1999

但是我碰巧在[]中添加了第三个维度,例如下面的代码,并对其进行了摘录,

foo[1:2, 3:4, 5]
>#       displ  year
>#  1      1.8  1999
>#  2      1.8  1999

我以为会抛出异常。但是,一切顺利。

以我的理解,R的data.frame是一种二维表。那么为什么我可以使用3维来在R中对数据帧进行子集化呢?这些代码背后发生了什么?基本原理是什么?
当我尝试使用第4维或更大尺寸来子集数据框时foo[1:2, 3:4, 5, 6],这次它会弹出一个错误Error in [.data.frame (foo, 1:2, 3:4, 5, 6): unused argument (6)我现在很困惑。

欢迎任何帮助,不胜感激。

迈克尔·奇里科

在A上data.frame,S3调度表示您正在使用[.data.frame您可以使用formals来查看其参数args

args(`[.data.frame`)
# function (x, i, j, drop = if (missing(i)) TRUE else length(cols) == 1) 

formals(`[.data.frame`)
# $x
# $i
# $j
# $drop
# if (missing(i)) TRUE else length(cols) == 1

您可以咨询?"[.data.frame"有关这些参数含义的更多详细信息。

至于为什么它没有失败,这可能是由于懒惰的评估。您可以查看Hadley的书,或者在附近搜索“惰性评估R”以获取更多资源

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

什么策略建议按月和年对数据帧进行子集化以获得R中的单个数据帧列表

如何使用占位符在 r 中对数据帧进行子集化

如何使用选择输入在 r Shiny 中对数据帧进行子集化?

为什么可以使用$来对SpatialPolygonsDataFrame进行子集化?

通过单独数据帧中的列内容对数据帧进行子集化 - Python 3

使用向量作为参数对数据帧进行子集化

使用 filter() 对数据帧进行子集化

如何像R中的SAS那样按列名对数据帧进行子集化?

如何在R中使用grep选择精确匹配来对数据帧进行子集化

如何基于R中的条件对数据帧进行子集

根据R中的某些条件对数据帧进行子集

在R中的ggplot中使用相同的列名称对数据帧进行子集和绘图

在 R 中对数据集进行子集化

从 R 中的函数内对数据进行子集化

如何根据下一次出现在R中对数据帧进行子集化?

通过数据的间隔,用 R 对数据帧进行子集化

使用数据表单单元格选择对 R 中的数据帧进行子集化

根据向量列表对数据帧进行子集化

在函数内对数据帧进行子集化

R:如何同时按条件和随机对数据帧进行子集化?

当受访者编号在列中重复时,对数据帧的行进行子集化

如何使用“starts_with”函数对数据帧进行子集化?

使用lapply并通过特征和功能对数据帧进行子集化

在 R 中,如何根据向量中的值对数据帧的行进行子集

如何使用向量对数据帧列表进行子集

使用带有$的逻辑向量对数据帧进行子集

使用值的间隔来对数据帧进行子集

通过R中的列内的唯一值对数据帧进行子集

使用每个行向量R的总和对数据帧进行子集