子集 - R以相反顺序打印数据 - [R 3.2.2,Win10 Pro,64位]

时间:2016-06-17 15:59:17

标签: r

目标:检索最后两个数据条目。(我知道尾函数或直接索引)

代码:

> tdata <- read.csv("hw1_data.csv")
> temp <- tdata[(nrow(tdata)-1):nrow(tdata), ]
> temp
    Ozone Solar.R Wind Temp Month Day
152    18     131  8.0   76     9  29
153    20     223 11.5   68     9  30  
> temp <- tdata[nrow(tdata)-1:nrow(tdata), ]
> temp
    Ozone Solar.R Wind Temp Month Day
152    18     131  8.0   76     9  29
151    14     191 14.3   75     9  28
150    NA     145 13.2   77     9  27
149    30     193  6.9   70     9  26
148    14      20 16.6   63     9  25
147     7      49 10.3   69     9  24
.
. 
.

在使用提取运算符获取子集时,我使用了nrows()函数来检索数据中的总行数并从中减去一行(比总行少一个)并使用序列运算符(:)序列直到nrows(数据),总行数。

当我使用括号时,逻辑工作正常,但当我跳过括号时,输出是反向顺序中的总数据帧。

我可以发现优先规则正在发挥作用,但无法弄清楚确切的逻辑。在R新,所以任何正式的解释都是有价值的。

Screenshot of both changes to the code:

2 个答案:

答案 0 :(得分:2)

columns.Bound(p => p.Status).Width(60).Filterable(ftb => ftb.Multi(true));

所以你运行的第一行是:

nrow(tdata) = 153

执行为temp <- tdata[(nrow(tdata)-1):nrow(tdata),]

第二行:

tdata[152:153,]

执行为temp <- tdata[nrow(tdata)-1:nrow(tdata),]

所以它返回以下内容:

tdata[153-1:153,]

答案 1 :(得分:2)

正如在帖子中正确怀疑的那样,观察到的行为实际上是运算符优先级的问题。

可以通过键入

获取R中的运算符语法和优先级规则的完整列表
help(Syntax)

在控制台中。

在这种情况下,R程序员有时会引用一个众所周知且引人注目的引用来鼓励使用括号:

library(fortunes)
fortune(138)