【问题标题】:Split a string by any number of spaces用任意数量的空格分割字符串
【发布时间】:2014-07-14 16:43:12
【问题描述】:

我有以下字符串:

[1] "10012      ----      ----      ----      ----       CAB    UNCH                    CAB"

我想用空格分割这个字符串,但是这些空格的空格数是可变的。有没有办法使用strsplit() 函数来拆分这个字符串并返回一个包含 8 个元素的向量,该向量已经消除了所有的间隙?

首选一行代码。

【问题讨论】:

  • read.table(text = yourstring)?
  • @Henrik 作为答案发帖好吗?我已经用过百万次了。
  • @zx8754 感谢您的提醒。不过我不太确定; OP 想要“返回一个 8 个元素的向量”,而 read.table 会产生一个有 8 列的 data.frame。所以这似乎不是正确的工具?

标签: r string strsplit


【解决方案1】:

只需使用strsplit\\s+ 进行拆分:

x <- "10012      ----      ----      ----      ----       CAB    UNCH       CAB"
x
# [1] "10012      ----      ----      ----      ----       CAB    UNCH       CAB"
strsplit(x, "\\s+")[[1]]
# [1] "10012" "----"  "----"  "----"  "----"  "CAB"   "UNCH"  "CAB"  
length(.Last.value)
# [1] 8

或者,在这种情况下,scan 也可以:

scan(text = x, what = "")
# Read 8 items
# [1] "10012" "----"  "----"  "----"  "----"  "CAB"   "UNCH"  "CAB"  

【讨论】:

    【解决方案2】:

    strsplit 函数本身就可以工作,只需使用strsplit(ss, " +")

    ss = "10012      ----      ----      ----      ----       CAB    UNCH                    CAB"
    
    strsplit(ss, " +")
    [[1]]
    [1] "10012" "----"  "----"  "----"  "----"  "CAB"   "UNCH"  "CAB"  
    

    HTH

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-22
      • 2014-12-13
      • 2013-08-02
      • 2023-04-02
      • 2013-10-11
      相关资源
      最近更新 更多