我有一个带有一些属性的对象,这些属性的值是整数,即h =
:
attr(,"foo")
[1] 4
attr(,"bar")
[1] 2
我想获取
integer(2)
类型,v =
类型的向量:[1] 4 2
我发现了两种笨拙的方法来实现这一目标
as.vector(sapply(names(attributes(h)), function(x) attr(h, x)))
或者:
as.integer(paste(attributes(h)))
我正在寻找的解决方案只需要适用于上述基本情况,并且需要尽可能快。
最佳答案
好吧,如果您可以保留原样的名称:
> h <- structure(42, foo=4, bar=2)
> unlist(attributes(h))
foo bar
4 2
否则(实际上更快!),
> unlist(attributes(h), use.names=FALSE)
[1] 4 2
性能如下:
system.time( for(i in 1:1e5) unlist(attributes(h)) ) # 0.39 secs
system.time( for(i in 1:1e5) unlist(attributes(h), use.names=FALSE) ) # 0.25 secs
system.time( for(i in 1:1e5) as.integer(paste(attributes(h))) ) # 1.11 secs
system.time( for(i in 1:1e5) as.vector(sapply(names(attributes(h)),
function(x) attr(h, x))) ) # 6.17 secs
关于r - R:获取属性值作为向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7719830/