2012-12-22 89 views
2

我有一個字符串thisLine,它包含用空格分隔的11個數字。我想獲得第一個數字。我試過命令:從字符串中提取第一個數字

grep('\\d*\\.\\d*',thisLine,value=TRUE) 

它返回整個字符串,而不是第一個數字。我如何返回第一個數字?

回答

6

我相信有很多的可能性,這裏有一些我會考慮:

thisLine <- paste(runif(11), collapse = " ") 
thisLine 
# [1] "0.841216114815325 0.861485596280545 0.973681036382914 0.683699210174382 0.95226536039263 0.368689567316324 0.173984130611643 0.497511914698407 0.870743532432243 0.45606177020818 0.222731305286288" 

sub("\\s+.*", "", thisLine)    # assumes no leading space 
sub("\\s*(\\S+?)\\s.*", "\\1", thisLine) # handles leading spaces 
strsplit(thisLine, " ")[[1]][1]   # more flexible if you want 2nd, 3rd, ... 

全部給

# [1] "0.841216114815325" 
+0

Thanks!我結束了使用strsplit。 – user984165

0

您可以從filesstringsNthNumber功能做到這一點非常漂亮包。要獲得第一個號碼,請使用n = 1。通過install.packages("filesstrings")安裝它。

library(filesstrings) 
#> Loading required package: stringr 
johnsmith <- "John Smith, 34 years of age, 6ft tall, 85kg." 
NthNumber(johnsmith, n = 1) # first number 
#> [1] 34 
NthNumber(johnsmith, n = 2) # second number 
#> [1] 6 
NthNumber(johnsmith, n = -1) # last number 
#> [1] 85