r - R:获取属性值作为向量

标签 r vector attributes

我有一个带有一些属性的对象,这些属性的值是整数,即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/

相关文章:

r - 提取列表中数字的范围

r - 在 r 中检查对象是否为 null 或空字符串的最佳方法

c# - 模拟属性 - C#

r - 创建R函数来查找两点之间的距离和角度

c++ - 从另一个成员函数的实现中调用成员函数

objective-c - 查找 Macintosh 文件的属性

python - 如何将图像上传的标题更改为 Django 类中的名称

递归默认参数引用

r - 有没有办法在一段时间内搜索 Twitter 时间轴中的特定单词?

c++ - 如何将 std::vector 转换为 Eigen 中的矩阵?