R-在数据框中使用括号

R- use of parenthesis in dataframes

我正在处理一个包含 8 行和 5 列的数据框。我只想打印最后 3 行。

我最初是这样写的:

last_3 <- my_df[ nrow(my_df) - 2 : nrow(my_df),]
last_3

这打印了从第 6 行到第 1 行的前 6 行(即按降序排列)

然后我做了这个并且它按预期工作(即行号 6,7 和 8)

last_3 <- my_df[( nrow( my_df) - 2) : nrow(my_df),]
last_3

谁能解释一下括号带来了什么变化? 第一种情况的输出是如何生成的。

这可以通过观察冒号 : 运算符比减号 - 运算符具有 更高 优先级来解释。这是一个向您展示发生了什么的示例,假设您的数据框 my_df 有 4 行:

my_df <- data.frame(v1=c(1,2,3,4), v2=c(1,2,3,4), v3=c(1,2,3,4))

nrow(my_df) - 2 : nrow(my_df)

4 - (2 : 4)
4 - [2, 3, 4]
[2, 1, 0]

换句话说,您实际上是在向序列 2:4 中添加一个数字。当你用括号括起索引时,你得到了你真正想要的行为:

(nrow(my_df) - 2) : nrow(my_df)

(4 - 2) : 4
2 : 4
[2, 3, 4]