文字列から数値のみを抽出して合計する

次年度予算を積算しておりますが、例えば以下のようなテキスト入力用のフォームから数値のみを抽出して合計する関数を検討。

ハードディスク 20千円
研究打合せ旅費(東京−仙台、1回、2泊3日、1人)50千円
研究打合せ旅費(東京−京都、1回、2泊3日、1人)50千円

 library(stringr)
 text1 <- read.table("clipboard",header=F,sep="|",fill=T)
 #クリップボードを読むので一旦、上記コマンドをペーストしてから、
 #クリップボードにコピーして↑ボタンで履歴を呼び出すのが楽
 #その後以下をペースト
 text2 <- sapply(text1,function(x){sub("\\(.+?\\)","",x)})#半角括弧内の削除
 text2 <- sub("\\(.+?\\)","",text2)#全角括弧内を削除
 extrnum <- str_extract_all(text2[,], "[0-9.]+")#数値抽出
 extnumstr <- sapply(extrnum,as.numeric)#数値化
 do.call(rbind,extnumstr)#行列に結合、複数列あるとおかしな結果になっていることが分かる。
 sum(unlist(extnumstr),na.rm=T)#合計値算出
 write(unlist(extnumstr),"clipboard",sep="\t")#値をクリップボードにもコピーするので、貼り付けられる。

追記:あいばさんより、もっと便利な方法を教えていただきました。ありがとうございます。

perl=TRUEにして、先読みを使うと
#千円の直前の半角数字を抽出
get.price <- function(str) as.numeric(regmatches(str, regexpr("[0-9]+(?=千円)", str, perl=TRUE)))
sapply(text1, get.price)