> str=" 9.48 12.89 13.9 6.79 "
> strsplit(str,split="\\s+")
[[1]]
[1] "" "9.48" "12.89" "13.9" "6.79"
> unlist(strsplit(str,split="\\s+"))->y
> y[y!=""]
[1] "9.48" "12.89" "13.9" "6.79"
我怎样才能通过strsplit的单个正则表达式来获取它,而不是用它来实现它
y[y!=""]
?
答案 0 :(得分:2)
我会在分割之前剪掉字符串:
strsplit(gsub("^\\s+|\\s+$", "", str), "\\s+")[[1]]
# [1] "9.48" "12.89" "13.9" "6.79"
或者,在这种情况下使用scan
非常直接:
scan(text=str)
# Read 4 items
# [1] 9.48 12.89 13.90 6.79
答案 1 :(得分:1)
如果你想提取正则数字后面的数字,那么
regmatches(str, gregexpr("[0-9.]+", text = str))[[1]]
## [1] "9.48" "12.89" "13.9" "6.79"
要捕获-ve数字,您可以使用以下
str = " 9.48 12.89 13.9 --6.79 "
regmatches(str, gregexpr("\\-{0,1}[0-9.]+", text = str))[[1]]
## [1] "9.48" "12.89" "13.9" "-6.79"