Sup*_*eka 2 r subset dataframe
我有以下示例代码.我有一个有16行的数据帧ts.当我用实际数字进行子集时,它工作正常但是当我用计算数字进行子集时,为什么我的代码表现得很奇怪?
有人可以解释一下这有什么不对吗?
情况1:
> a
[1] 12
> c
[1] 16
> ts$trend[13:16]
[1] 21.36926 21.48654 21.60383 21.72111
> ts$trend[a+1:c]
[1] 21.36926 21.48654 21.60383 21.72111 NA NA NA NA NA NA NA NA
[13] NA NA NA NA
Run Code Online (Sandbox Code Playgroud)
案例2:
> b
[1] 4
> temp[1: 8]
[1] 1 2 3 4 5 6 7 8
> temp[1: b+b]
[1] 5 6 7 8
Run Code Online (Sandbox Code Playgroud)
R并不关心你的空间表达方式.根据严格的优先方案评估事物.括号中的内容首先完成.所以:
> 1: b+b
[1] 5 6 7 8
Run Code Online (Sandbox Code Playgroud)
因为加法的优先级低于":".首先1:b评估,然后b添加.所以你得到:
> (1:b)+b
[1] 5 6 7 8
Run Code Online (Sandbox Code Playgroud)
如果你想要替代方案,可以括起来:
> 1:(b+b)
[1] 1 2 3 4 5 6 7 8
Run Code Online (Sandbox Code Playgroud)
(1+b):b如果那是你想要的,我建议你也加以括号- 括号没有区别,但是对于忘记优先规则的人来说,它们有助于提高可读性.