【问题标题】:R: Getting attribute values as a vectorR:获取属性值作为向量
【发布时间】:2011-10-10 23:31:55
【问题描述】:

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

我正在寻找的解决方案只需要适用于我上面描述的基本情况,并且需要尽可能快。

【问题讨论】:

    标签: r vector attributes


    【解决方案1】:

    好吧,如果你能接受完整的名字:

    > 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
    

    【讨论】:

      猜你喜欢
      • 2017-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多