【问题标题】:how to convert single character vector to numeric in R?如何将单个字符向量转换为R中的数字?
【发布时间】:2021-07-24 12:53:57
【问题描述】:

我的数据集的一列如下所示;

"[3, 4, 5, 6]"

我想将下面这个向量的每个值都拆分为数字;

3, 4, 5, 6 

我能做什么?

感谢您的回答。

【问题讨论】:

  • RegEx 删除 [ 并照常进行?例如gsub("\\D","", vec)(好的,这也会去掉逗号)?
  • 如果要将其转换为数字,则输出将是 list-col 类型。可以吗?

标签: r


【解决方案1】:

删除括号并使用逗号分隔字符串。 strsplit() 返回一个列表。你想要一个向量,所以让我们unlist() 把它转换成数字。

x <- "[3, 4, 5, 6]"
x <- gsub("\\[|\\]","", x)
y <- as.numeric(unlist(strsplit(x, ",", fixed=TRUE)))
y
#> [1] 3 4 5 6

reprex package (v2.0.0) 于 2021-05-01 创建

【讨论】:

    【解决方案2】:

    对于这个向量

    x = "[3, 4, 5, 6]"
    

    查找 1 个或多个数字序列的所有匹配项 并从原始位置提取匹配项

    match = gregexpr("[[:digit:]]+", x)
    values = regmatches(x, match)
    

    这是一个字符值列表;强制转换为整数,例如,允许 x 长度大于 1

    lapply(values, as.integer)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-05-03
      • 2014-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-12
      • 2019-02-07
      相关资源
      最近更新 更多