r - 如何对表示为字符串的值和运算符执行算术运算?

标签 r

我有一个 character比率(比例)表示为字符串的变量:
x <- c("2/3", "5/6", "3/11") .

我想将 x 中的字符值转换为百分比。因此,我想要的输出是:

c(2/3, 5/6, 3/11) * 100
# [1] 66.66667 83.33333 27.27273 

当我尝试 as.numeric(x) , 生成警告信息(强制引入的 NAs)并且所有元素都转换为 NA
该怎么办?

最佳答案

以下是一些替代方案:

1) 读表 读入文本,就好像它是一个文件,然后分割:

with(read.table(text = x, sep = "/"), 100 * V1 / V2)
## [1] 66.66667 83.33333 27.27273

2) 评估/解析 eval/parse 通常不受欢迎,但它是如何工作的:
100 * sapply(as.list(parse(text = x)), eval)
## [1] 66.66667 83.33333 27.27273

3)strsplit
sapply(strsplit(x, "/"), function(x) { x <- as.numeric(x); 100 * x[1] / x[2]})
## [1] 66.66667 83.33333 27.27273

4) gsubfn::strapply 这使用 strapply 挑选出两个数字串然后将每个转换为数字并除以:
library(gsubfn)

strapply(x, "(\\d+)/(\\d+)", ~ 100 * as.numeric(x) / as.numeric(y), simplify = TRUE)
## [1] 66.66667 83.33333 27.27273

关于r - 如何对表示为字符串的值和运算符执行算术运算?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36073503/

相关文章:

R:在 ggplot boxplot 中裁剪图例留下两个独立的图例

rep() 每个都等于一个向量

r - 检查计数器变量中的步骤是否丢失

r - Summarise_each 为第一个非 NA 值

R Markdown : change the title of the "References" section?

r - 在 caret R 包中控制交叉验证的抽样

r - 如何使用 R 和 dplyr 从 Redshift 检索超过 100000 行

r - 选择一个样本以匹配另一个数据集中的变量分布

r - R将ggplot对象分配给循环列表

r - 如何在 R markdown HTML 中突出显示数据框中的特定单元格