【问题标题】:Remove '%' from numeric matrix从数字矩阵中删除 '%'
【发布时间】:2020-07-24 06:40:23
【问题描述】:

快速提问,如何从应该是数字的矩阵中删除不需要的字符?

我总是对apply 函数感到困惑,而且我似乎无法正确理解这一点......

检查这个 MWE,我在一些数字后面有一些不需要的“%”,它们需要被删除。我知道如何在变量(列)的基础上做到这一点,但是如何将它正确地应用于整个矩阵?

> a=matrix(c('7%','11%',22,'65%',7,8,'1%','77%','34%'), ncol=3)
> a
     [,1]  [,2]  [,3]
[1,] "7%"  "65%" "1%"
[2,] "11%" "7"   "77%"
[3,] "22"  "8"   "34%"
> as.numeric(sub("%$","",a[,1]))
[1]  7 11 22

预期输出:

> a
     [,1] [,2] [,3]
[1,]    7   65    1
[2,]   11    7   77
[3,]   22    8   34

【问题讨论】:

  • 你想apply你的代码到每一列(边距2):apply(a, 2, function(x) as.numeric(sub("%$","", x)))
  • 当然!我正在尝试应用,但没有正确...谢谢!

标签: r matrix apply


【解决方案1】:

在矩阵上,您可以直接应用转换:

b <- a
b <- as.numeric(sub('%$','', b))
dim(b) <- dim(a)
b
#     [,1] [,2] [,3]
#[1,]    7   65    1
#[2,]   11    7   77
#[3,]   22    8   34

【讨论】:

    【解决方案2】:

    我们可以一步完成

    matrix(readr::parse_number(a), dim(b))
    #     [,1] [,2] [,3]
    #[1,]    7   65    1
    #[2,]   11    7   77
    #[3,]   22    8   34
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-14
      • 2013-07-22
      • 1970-01-01
      • 2012-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多