R 字符串拆分并压缩为空 space

R string split and compress empty space

这应该是一个简单的问题,但我想不出来。我正在尝试使用给定的变量列表来选择数据变量,但是,应用字符串拆分我得到 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"   

字符串已经有前导space,所以我们用trimws去掉那些leading/lagging space,然后用strsplitsplit 作为一个或多个 spaces (\s+)。单词之间有可能不止一个space。

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

或者另一个选项是 scan,它会自动删除白色space

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

我们也可以使用 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