使用gsub代替strsplit或scan
是否有其他方法可以拆分字符串而不是使用使用gsub代替strsplit或scan,r,split,R,Split,是否有其他方法可以拆分字符串而不是使用 unlist(strsplit("1.2.3", "[.]")) scan(text="1.2.3", what="", sep=".") gsub和sub.sub是惰性的,所以只在模式的第一次出现时(从左到右)工作。Gsub(全球分部)将处理所有这些问题 > sub("asdkd_kasd_ads", pattern = "_", replacement = "") [1] "asdkdkasd_ads" > sub("asdkd_kasd
unlist(strsplit("1.2.3", "[.]"))
scan(text="1.2.3", what="", sep=".")
gsub和sub.sub是惰性的,所以只在模式的第一次出现时(从左到右)工作。Gsub(全球分部)将处理所有这些问题
> sub("asdkd_kasd_ads", pattern = "_", replacement = "")
[1] "asdkdkasd_ads"
> sub("asdkd_kasd_ads", pattern = "_.*", replacement = "")
[1] "asdkd"
> gsub("asdkd_kasd_ads", pattern = "_", replacement = "")
[1] "asdkdkasdads"
> gsub("asdkd_kasd_ads", pattern = "_.*", replacement = "")
[1] "asdkd"
或者在您的情况下:
> gsub("1.2.3", pattern = "\\.", replacement = " ")
[1] "1 2 3"
在基本包中的R模式匹配函数中(请参见
?gsub
),这里使用的是gregexpr
。它将识别非
字符块的开始和结束位置,然后您可以使用regmatches
重新构建它们:
x <- "1.2.3.4as.zz2.zzxd3"
regmatches(x, gregexpr("[^.]+", x))[[1]]
# [1] "1" "2" "3" "4as" "zz2" "zzxd3"
x为什么?您给出的解决方案有什么问题?扫描线对我不起作用。@KarlForner有什么错误?它对我有用。克劳斯-这只是好奇还是你有一个用例,你给出的合理的建议实际上不起作用?速度是个问题吗?你有一个超级、超级、超长的字符串吗?现在你编辑了它,它当然可以工作了……是不是stru-split
fromstringr
太明显了?这并不能回答问题。请回答flodel最后的评论。