R中某个字符后捕获的数字的数学运算
Mathematical operation on captured number that comes after a certain character in R
我有一个包含如下元素的向量:
x <- c("3434/1233", "3434.332/232.2", "220.23/932.89", "908.11111/9")
我想用它们的值 乘以 60 替换斜杠 之后的数字 。
因此生成的向量将是:
x.times.sixty <- c("3434/73980", "3434.332/13932", "220.23/55973.4", "908.11111/540")
我该怎么做?
我试过以下方法无效:
gsub(x = x, pattern = "/(.*)", replacement = as.numeric('\1' * 60))
还有这个:
gsub(x = x, pattern = "/(.*)", replacement = '\1 * 60')
我们可以使用 gsubfn
进行乘法运算。捕获字符串末尾的数字,包括小数点(([0-9.]+$)
),将其转换为数字并乘以 60
library(gsubfn)
gsubfn("([0-9.]+$)", ~ as.numeric(x)*60, x)
#[1] "3434/73980" "3434.332/13932" "220.23/55973.4" "908.11111/540"
或正确遵循条件
gsubfn("\/([0-9.]+$)", ~ paste0("/", as.numeric(x)*60), x)
#[1] "3434/73980" "3434.332/13932" "220.23/55973.4" "908.11111/540"
我有一个包含如下元素的向量:
x <- c("3434/1233", "3434.332/232.2", "220.23/932.89", "908.11111/9")
我想用它们的值 乘以 60 替换斜杠 之后的数字 。
因此生成的向量将是:
x.times.sixty <- c("3434/73980", "3434.332/13932", "220.23/55973.4", "908.11111/540")
我该怎么做?
我试过以下方法无效:
gsub(x = x, pattern = "/(.*)", replacement = as.numeric('\1' * 60))
还有这个:
gsub(x = x, pattern = "/(.*)", replacement = '\1 * 60')
我们可以使用 gsubfn
进行乘法运算。捕获字符串末尾的数字,包括小数点(([0-9.]+$)
),将其转换为数字并乘以 60
library(gsubfn)
gsubfn("([0-9.]+$)", ~ as.numeric(x)*60, x)
#[1] "3434/73980" "3434.332/13932" "220.23/55973.4" "908.11111/540"
或正确遵循条件
gsubfn("\/([0-9.]+$)", ~ paste0("/", as.numeric(x)*60), x)
#[1] "3434/73980" "3434.332/13932" "220.23/55973.4" "908.11111/540"