[英]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不起作用...非常感謝!
我知道它通常是不好的形式,但是我認為最簡單的方法是在這些情況下使用eval
和parse
並完全跳過正則表達式:
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.