簡體   English   中英

將字符轉換為r中的數字范圍?

[英]convert characters to numeric range in r?

我有一個簡單的問題。 我有一組向量(字符)。 我想將它們與冒號運算符一起轉換為數字。

a <- c("10:20", "25:30")
print (a)

[1] "10:20" "25:30"

as.numeric(a)

[1] 不適用

警告信息:

強制引入的 NA

這是我得到的錯誤。

預期的輸出是

10:20
20:30

我厭倦了這個,但沒有按我預期的方式工作

strapply(a, "(\\d+):(\\d+)")

很難知道預期輸出是什么意思。 從字面上看,您希望將字符串轉換為調用:

 lapply(a, function(x) as.call(parse(text = x))[[1]])
#> [[1]]
#> 10:20
#>
#> [[2]]
#> 25:30

我的猜測是這不是您的意思,而是您希望對字符串進行評估,在這種情況下您可以這樣做:

lapply(a, function(x) eval(parse(text = x)))
#> [[1]]
#> [1] 10 11 12 13 14 15 16 17 18 19 20
#>
#> [[2]]
#> [1] 25 26 27 28 29 30

但是,這是相當不安全的,因為如果事先不總是檢查數據的安全性,很容易編寫導致計算機出現問題的惡意字符串。

一種更安全的方法是

lapply(strsplit(a, ":"), function(x) x[1]:x[2])
#> [[1]]
#>  [1] 10 11 12 13 14 15 16 17 18 19 20
#> 
#> [[2]]
#> [1] 25 26 27 28 29 30

如果字符串的格式不正確,而不是在您的計算機上運行任意代碼,這將引發錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM