我对标识等数字标量:你如何检查R中的标量?
doub <- 3.14
intg <- 8L
我知道,这些都是作为一个长度矢量处理。因此,对于任何R对象x
,是is.vector(x) && length(x) == 1
正确的方法来检查x
是否是标量? length(x) == 1
本身是不够的,因为它返回一个真正的,当它应该返回false时,对于具有一列的数据帧或具有一个元素的列表。
有没有这样的功能is.scalar
在基地执行R
?出于某种原因,这两个我能找到在其他功能失败前面提到的数据帧的情况下,它们是:
assertthat::is.scalar(data.frame(a = 1:2))
lambda.tools::is.scalar(data.frame(a = 1:2))
为什么这两个函数的结果如何调用不同的,以我的理解(和定义) is.scalar
函数应该工作吗?
你可能想'is.atomic'而不是'is.vector'。 –
两者有什么区别? – Alex
请参阅'?is.atomic':“通常调用原子类型的原子向量,但请注意”是“。矢量“进一步限制:一个对象可以是原子,但不是矢量(从这个意义上说)。” – MichaelChirico