我有一个包含这样的元素的向量:
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"