[英]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.