簡體   English   中英

R:如何將列表分成幾個數字並進行計算?

[英]R: How to split list into several numbers and do the calculation?

我的數據如下:-3 + 2 41-12使用以下代碼分離了每個部分后:

text = '-3+2'

pattern = '-?\\d+'
matches = gregexpr(pattern, text)
a=regmatches(text, matches)

我得到了“數字”列表

a
[[1]]
[1] "-3" "2"

如果我想將-3和2加在一起怎么辦? eg(-3 + 2)=-1因為上面的結果是一個列表,所以as.numeric不起作用...非常感謝!

我知道它通常是不好的形式,但是我認為最簡單的方法是在這些情況下使用evalparse並完全跳過正則表達式:

text = c("-3+2", "99+44-100")
sapply(text, function(x) eval(parse(text=x)))
#      -3+2 99+44-100 
#        -1        43 

如果您不喜歡矢量上的名稱,則可以執行以下操作:

unname(sapply(text, function(x) eval(parse(text=x))))
# [1] -1 43

在您的特定情況下(2個數字):

as.integer(a[[1]][1]) + as.integer([[1]][2])

更普遍:

sum(sapply(a[[1]], as.integer))

或從列表中進行解析后:

sapply(a, function(x) sum(as.numeric(x)))

暫無
暫無

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

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