【问题标题】:R strsplit keep last empty element as empty stringR strsplit 将最后一个空元素保留为空字符串
【发布时间】:2019-10-01 14:41:33
【问题描述】:

R 的strsplit 在“空”时删除最后一个元素(示例 2),但不是在第一次出现时(示例 3)或在要拆分的向量中间(示例 4)。

> unlist(strsplit(x = "1,4", split = ",")) #Example 1
[1] "1" "4"
> unlist(strsplit(x = ",4", split = ",")) #Example 2
[1] ""  "4"
> unlist(strsplit(x = "1,", split = ",")) #Example 3
[1] "1"
> unlist(strsplit(x = "1,,,4", split = ",")) #Example 4
[1] "1" ""  ""  "4"

有没有办法解析字符串,允许在拆分后保留最后一个元素(如果为空):

> strmagic(x = "1,", split = ",") #strmagic being the wanted function
[1] "1" ""

其他包的解决方案是here(似乎)。可以在base R中完成吗?

更新

是否需要添加一个填充元素然后是一个 la:

strmagic <- function(v, sep)lapply(v, function(x)head(unlist(strsplit(paste(x, "-", sep = sep), split = sep)), -1))

【问题讨论】:

  • 你可以在x的末尾添加一个,,当没有逗号结束字符串但不是很有效时,使用stringr

标签: r strsplit


【解决方案1】:

很奇怪。这有效,但不是最有效的。 ZAQ 只是一组随机字符

sp <- function( X ){
    X <- paste0( X, "ZAQ" )
    X <- unlist(strsplit(x = X, split = ","))
    X <- gsub( "ZAQ" ,"" ,X) 
    X
}
sp("1,4")
sp(",4")
sp("1,")
sp("1,,,4")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-24
    • 2017-12-14
    • 2014-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多