Jul*_*ora 74
你快到了; rev
做你需要的:
rev(1:3)
# [1] 3 2 1
rev(numeric(0))
# numeric(0)
Run Code Online (Sandbox Code Playgroud)
原因如下:
rev.default
# function (x)
# if (length(x)) x[length(x):1L] else x
# <bytecode: 0x0b5c6184>
# <environment: namespace:base>
Run Code Online (Sandbox Code Playgroud)
在这种情况下numeric(0)
,length(x)
返回0.由于if
需要一个逻辑条件,它强制length(x)
到TRUE
或FALSE
.它发生as.logical(x)
的FALSE
时候x
是0和TRUE
任何其他号码.
因此,if (length(x))
精确测试你想要的东西 - 是否x
长度为零.如果不是,length(x):1L
则具有理想的效果,否则就不需要反转任何内容,正如@floder在评论中解释的那样.