【问题标题】:R string split and compress empty spaceR字符串拆分并压缩空白空间
【发布时间】:2022-01-21 19:48:31
【问题描述】:

这应该是一个简单的问题,但我无法弄清楚。我正在尝试使用给定的变量列表来选择数据变量,但是,应用字符串拆分我得到了 8 而不是 5。显然,额外的空格被拆分为 1、3、5 的空变量。有关如何解决此问题的任何提示?

 list <- " ethnicity_source_value  race_source_value  gender_source_value dx_age site"
  unlist(strsplit(list, " "))
[1] ""                       "ethnicity_source_value" ""                      
[4] "race_source_value"      ""                       "gender_source_value"   
[7] "dx_age"                 "site"   

【问题讨论】:

    标签: r string space


    【解决方案1】:

    我们也可以使用来自stringr 包的str_squishstr_squish() 还减少了字符串中重复的空格:

    library(stringr)
    unlist(strsplit(str_squish(list), " "))
    
    [1] "ethnicity_source_value" "race_source_value"     
    [3] "gender_source_value"    "dx_age"                
    [5] "site
    

    【讨论】:

      【解决方案2】:

      字符串已经有一个前导空格,所以我们使用trimws 删除那些前导/滞后空格,然后使用strsplitsplit 作为一个或多个空格(\\s+)。单词之间可能有多个空格。

      unlist(strsplit(trimws(list), "\\s+"))
      [1] "ethnicity_source_value" "race_source_value"      "gender_source_value"    "dx_age"                
      [5] "site"
      

      或者另一个选项是scan,它会自动删除空格

      scan(text = list, what = "", quiet = TRUE)
      [1] "ethnicity_source_value" "race_source_value"      "gender_source_value"    "dx_age"                
      [5] "site"                 
      

      【讨论】:

      • 除了上面的这个答案之外,还有任何其他技巧可以使相同的列表变为 c("ethnicity_source_value","race_source_value ","gender_source_value", "dx_age","site")?我试过 as.list(scan(text = list, what = "", quiet = TRUE),sep=',') 但似乎它没有返回预期的内容。谢谢!
      • 似乎 dput 只是暂时的。一旦被分配,它又回来了。 factd factd [1] "Race" "Gender" "Ethnicity" "year_of_birth"
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-17
      • 2020-12-01
      • 2021-07-17
      相关资源
      最近更新 更多