【发布时间】:2018-10-15 00:04:59
【问题描述】:
我有一个来自 MS 的 predictive maintenance R Notebook example 的 data.frame。
现在他们展示了如何像这样子集这个data.frame(显示一些第一行和一些最后一行代码,而不是使用head()或tail()):
> errors[c(1:3, nrow(errors)-3:1),]
datetime machineID errorID
1 2015-01-03 07:00:00 1 error1
2 2015-01-03 20:00:00 1 error3
3 2015-01-04 06:00:00 1 error5
3916 2015-12-04 02:00:00 100 error1
3917 2015-12-08 06:00:00 100 error2
3918 2015-12-08 06:00:00 100 error3
他们想输出
我确实理解冒号运算符的作用。但我真的不明白它在这个例子中做了什么。因为:4:1 会返回
> 4:1
[1] 4 3 2 1
和
nrow(errors):1
[1] 3919 3918 3917 3916 3915 3914 3913 3912 3911 3910 3909 3908 3907 3906 3905 3904 3903
[18] 3902 3901 3900 3899 3898 3897 3896 3895 3894 3893 3892 3891 3890 3889 3888 3887 3886
...
然后以下内容不会返回我所期望的:
> nrow(errors)-3:1
[1] 3916 3917 3918
我原以为它会返回与以前相同的长列表,但从索引nrow(errors)-3 开始。所以像:
nrow(errors):1
[1] 3916 3915 3914 3913 3912 3911 3910 3909 3908 3907 3906 3905 3904 3903
...
我在这里理解错了什么? 提前致谢!
【问题讨论】:
-
试试
(nrow(errors)-3):1,看看stat.ethz.ch/R-manual/R-devel/library/base/html/Syntax.html -
首先计算冒号运算符。您现在需要记住 BO:DMAS,而不是 BODMAS。
-
请参阅
?Syntax以获取提供运算符优先级的表。
标签: r