【问题标题】:Trim text after character for every item in list - R为列表中的每个项目修剪字符后的文本 - R
【发布时间】:2019-02-15 12:05:14
【问题描述】:

我正在尝试删除列表中每个元素之前的文本并包含一个字符(“-”)。

前-

x = list(c("a-b","b-c","c-d"),c("a-b","e-f"))

想要的输出:

"b" "c" "d"     
"b" "f"

我尝试过使用lapplygsub的各种组合,比如

lapply(x,gsub,'.*-','',x)

但这只是返回一个空列表-

[[1]]
[1] ""

[[2]]
[1] ""

并且只使用

gsub(".*-","",x)

返回

"d\")" "f\")"

【问题讨论】:

    标签: r


    【解决方案1】:

    你很接近,但是使用lapplygsub,R 不知道哪个参数是哪个。您只需要显式地标记参数。

    x <- list(c("a-b","b-c","c-d"),c("a-b","e-f"))
    lapply(x, gsub, pattern = "^.*-", replacement = "")
    
    [[1]]
    [1] "b" "c" "d"
    
    [[2]]
    [1] "b" "f"
    

    【讨论】:

    • (+1) 也许将模式更改为^.*-(或^\\w-)以仅替换前导(单个)字符,这可能更安全一些。跨度>
    【解决方案2】:

    这可以通过 for 循环来完成。

    val<-list()
    for(i in 1:length(x)){
      val[[i]]<-gsub('.*-',"",x[[i]])}
    val
    [[1]]
    [1] "b" "c" "d"
    
    [[2]]
    [1] "b" "f"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-07
      • 2022-07-12
      • 2014-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-03
      相关资源
      最近更新 更多