我想将字符串中的某些小数字符转换为十进制格式,但保留其余字符串的上下文,以便:
成为:
此answer与我要执行的操作类似,但是当调整为用例时,它不会保留字符串的其余部分,并且在用于数据时似乎完全崩溃了框架。
library(gsubfn)
calc <- function(s) {
x <- c(if (length(s) == 2) 0, as.numeric(s), 0:1)
x[1] + x[2] / x[3]
}
ff <- c('1 1/2', '2 3/4', '2/3', '11 1/4', '5/4')
sapply(strapplyc(ff, "\\d+"), calc)
#1.5000000 2.7500000 0.6666667 11.2500000 1.2500000
ef = c('1 1/2" ant', '2 3/4" apple', '2/3" berry', '11" 1/4 plum', '5/4" orange')
sapply(strapplyc(ef, "\\d+"), calc)
#1.5000000 2.7500000 0.6666667 11.2500000 1.2500000
df <- as.data.frame(ef)
sapply(strapplyc(df$ef, "\\d+"), calc)
#2 3 4 1 5
答案 0 :(得分:1)
选项为gsubfn
gsubfn("(\\d+) (\\d+)", ~ as.numeric(x) + as.numeric(y),
gsubfn("(\\d+)/(\\d+)", ~ as.numeric(x)/as.numeric(y), ef))