如何测试对象是否为向量,即模式 logical
, numeric
, complex
或 character
? is.vector
的问题是它也返回 TRUE
对于列表和其他类型:
> is.vector(list())
[1] TRUE
我想知道它是否是原始类型的向量。是否有 native 方法,还是必须使用存储模式?
最佳答案
只有原始函数,所以我假设您想知道向量是否是原子类型之一。如果你想知道一个对象是否是原子的,使用 is.atomic
.
is.atomic(logical())
is.atomic(integer())
is.atomic(numeric())
is.atomic(complex())
is.atomic(character())
is.atomic(raw())
is.atomic(NULL)
is.atomic(list()) # is.vector==TRUE
is.atomic(expression()) # is.vector==TRUE
is.atomic(pairlist()) # potential "gotcha": pairlist() returns NULL
is.atomic(pairlist(1)) # is.vector==FALSE
如果您只对您提到的原子类型的子集感兴趣,最好明确测试它们:
mode(foo) %in% c("logical","numeric","complex","character")
关于r - 如何测试对象是否为向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19501186/