【问题标题】:How to extract numeric values from a structure object in R如何从R中的结构对象中提取数值
【发布时间】:2012-09-15 22:54:06
【问题描述】:

我需要从一个变量中提取数值,该变量是一个结合了数值和名称的结构

structure(c(-1.14332132657709, -1.1433213265771, -1.20580568266868, 
-1.75735158849487, -1.35614113300058), .Names = c("carbon", 
"nanotubes", "potential", "neuron", "cell", "adhesion"))

最后我想要一个包含这些信息的向量

c(-1.14332132657709, -1.1433213265771, -1.20580568266868, 
-1.75735158849487, -1.35614113300058)

我该怎么做? 非常感谢

【问题讨论】:

  • dimnames和数值向量的长度不同
  • .Name 是不是太多了?否则as.numeric()
  • 我不确定你想做什么。如果您只是想摆脱名称,那么为什么不直接使用as.numeric(x)names(x) <- NULL

标签: r structure numeric names


【解决方案1】:

as.numeric()unname() 都这样做:

R> structure(c(-1.14332132657709, -1.1433213265771, -1.20580568266868,
+              -1.75735158849487, -1.35614113300058, NA),
+            .Names = c("carbon", "nanotubes", "potential", 
+            "neuron", "cell", "adhesion"))
   carbon nanotubes potential    neuron      cell  adhesion 
 -1.14332  -1.14332  -1.20581  -1.75735  -1.35614        NA 
R> foo
   carbon nanotubes potential    neuron      cell  adhesion 
 -1.14332  -1.14332  -1.20581  -1.75735  -1.35614        NA 
R>
R> as.numeric(foo)            ## still my 'default' approach
[1] -1.14332 -1.14332 -1.20581 -1.75735 -1.35614       NA
R>
R> unname(foo)                ## maybe preferable though
[1] -1.14332 -1.14332 -1.20581 -1.75735 -1.35614       NA
R> 

【讨论】:

    【解决方案2】:

    unname 呢?

    > myVec <- structure(c(-1.14332132657709, -1.1433213265771, -1.20580568266868, 
      -1.75735158849487, -1.35614113300058), .Names = c("carbon", 
      "nanotubes", "potential", "neuron", "cell"))
    
    + + > > unname(myVec)
    [1] -1.143321 -1.143321 -1.205806 -1.757352 -1.356141
    

    【讨论】:

      【解决方案3】:
      myVec <- structure(c(-1.14332132657709, -1.1433213265771, -1.20580568266868, 
        -1.75735158849487, -1.35614113300058), .Names = c("carbon", 
        "nanotubes", "potential", "neuron", "cell"))
      
      as.numeric(myVec)
      # [1] -1.143321 -1.143321 -1.205806 -1.757352 -1.356141
      

      或者

      names(myVec) <- NULL
      

      编辑:

      unname 用于原子向量只是 names(obj) &lt;- NULL 带有一些多余的代码。

      【讨论】:

      • @ClaudioMeo,刚刚解释了为什么我认为names(myVec) &lt;- NULL 比使用unname 更直接
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-18
      • 2021-12-23
      • 1970-01-01
      • 2012-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多