【问题标题】:Splitting strings in R and extracting information from lists在 R 中拆分字符串并从列表中提取信息
【发布时间】:2013-01-15 22:05:56
【问题描述】:

我的数据中有以下行名:

column_01.1
column_01.2
column_01.3
column_02.1
column_02.2

我可以使用以下命令拆分这些行名:

strsplit(rownames(my_data),split= "\\.")

并获取列表:

[[1]]
[1] "column_01" "1"   

[[2]]
[1] "column_01" "2"   

[[3]]
[1] "column_01" "3"

...

但是因为我想要字符从第一部分出来并完全丢弃第二部分,像这样:

column_01
column_01
column_01
column_02
column_02

我已经用尽了仅提取这部分信息的技巧。我用 unlist() 和 as.data.frame() 尝试了一些选项,但没有运气。或者有没有更简单的方法来分割字符串?我不想使用as.character(substring(rownames(my_data),1,9)) 作为“。”的位置。可以改变(虽然它适用于这个例子)。

【问题讨论】:

  • 另一种方法是使用reshape2 包中的colsplit 函数。

标签: r


【解决方案1】:

您可以映射[ 以获取第一个元素:

sapply(strsplit(rownames(my_data),split= "\\."),'[',1)

...或者(更好)使用正则表达式:

gsub('\\..*$','',rownames(my_data))

(翻译:查找(点字符,某物,字符串结尾)的所有匹配项并替换为空字符串)

【讨论】:

    【解决方案2】:

    因为我喜欢 stringr 包,我想我会把它扔出去:

    str_replace(rownames(my_data), "(^column_.+)\\.\\d+", "\\1")
    

    (我不喜欢正则表达式,所以^ 在括号外可能会更好)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-24
      • 1970-01-01
      • 2017-09-19
      • 2015-03-18
      • 1970-01-01
      • 2015-01-25
      • 2021-12-13
      相关资源
      最近更新 更多