如何测试对象是否是一个载体,即模式logical
,numeric
,complex
或character
?问题is.vector
是它也返回TRUE
列表和其他类型:
> is.vector(list())
[1] TRUE
Run Code Online (Sandbox Code Playgroud)
我想知道它是否是原始类型的向量.是否有本机方法,或者我必须通过存储模式?
Jos*_*ich 30
只有原始函数,所以我假设你想知道向量是否是原子类型之一.如果您想知道对象是否是原子对象,请使用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
Run Code Online (Sandbox Code Playgroud)
如果您只对所提到的原子类型的子集感兴趣,那么最好明确地测试它们:
mode(foo) %in% c("logical","numeric","complex","character")
Run Code Online (Sandbox Code Playgroud)
小智 6
也许不是最优的,但它会完成工作:检查变量是否为向量,如果它不是列表.然后你将绕过is.vector
结果:
if(is.vector(someVector) & !is.list(someVector)) {
do something with the vector
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
26816 次 |
最近记录: |