从R向量中删除单位

时间:2017-10-25 14:34:12

标签: r

使用units包我可以创建一个包含物理单位的向量,例如:

library(units)
a = 1:10
units(a) <- with(ud_units, m/s) 
a
## Units: m/s
##  [1]  1  2  3  4  5  6  7  8  9 10

但是如何在没有单位的情况下返回普通的R矢量?

unclass(a)执行大部分工作,但在向量中留下了一堆属性:

unclass(a)
## [1]  1  2  3  4  5  6  7  8  9 10
## attr(,"units")
## $numerator
## [1] "m"
##
## $denominator
## [1] "s"
##
## attr(,"class")
## [1] "symbolic_units"

但我觉得应该有一个更简单的方法。分配为unitless没有用,它会创建一个带有“无单位”单位的向量。

小插图中没有任何东西......

3 个答案:

答案 0 :(得分:2)

您可以使用as.vector:)

或更为一般:

clean_units <- function(x){
  attr(x,"units") <- NULL
  class(x) <- setdiff(class(x),"units")
  x
}

a <- clean_units(a)
# [1]  1  2  3  4  5  6  7  8  9 10
str(a)
# int [1:10] 1 2 3 4 5 6 7 8 9 10

答案 1 :(得分:1)

as.vector应该适用于这种情况:


library(units)                 
a = 1:10                       
units(a) <- with(ud_units, m/s)
a                              
#> Units: m/s
#>  [1]  1  2  3  4  5  6  7  8  9 10
str(a)                         
#> Class 'units'  atomic [1:10] 1 2 3 4 5 6 7 8 9 10
#>   ..- attr(*, "units")=List of 2
#>   .. ..$ numerator  : chr "m"
#>   .. ..$ denominator: chr "s"
#>   .. ..- attr(*, "class")= chr "symbolic_units"

b = as.vector(a)               
str(b)                         
#>  int [1:10] 1 2 3 4 5 6 7 8 9 10

答案 2 :(得分:0)

我猜SDL_Window也可以与矩阵一起使用

Dim cb As CheckBox
With Sheets("Job_Card_Update")
    For Each cb In .CheckBoxes
        If Not Intersect(cb.TopLeftCell, .Range("M13:M20")) Is Nothing Then cb.Delete
    Next
End With