首页 > 解决方案 > 有没有一种方法可以使用作为 R 中数据框中列中的元素的运算符

问题描述

实际目标比这要广泛得多,但在其中,我需要执行方程式,其中运算符是数据框中的值之一。示例代码以正在使用的 df 中的格式复制三列。在这个例子 df 中,我想执行 20+5、10-10 和 5*15 的操作。

# R code for sample df
a <- c(20,10,5)
b <- as.character(c("+","-","*"))
c <- c(5,10,15)
df <- data.frame(a,b,c)

标签: rdataframeoperators

解决方案


一个相当清晰的使用方法dplyr可能是:

df %>%
 mutate(d = case_when(b == "+" ~ a + c,
                      b == "-" ~ a - c,
                      TRUE ~ a * c))

在这里,您基本上定义了关系。由于运营商不多,所以问题不大。

@Gregor 已经概述的另一种方式涉及eval(parse(...))

df %>%
 rowwise() %>%
 mutate(d = paste(a, b, c),
        d = eval(parse(text = d)))

但是,您应该谨慎使用它。请参阅eval(parse(...)) 的具体危险是什么?


推荐阅读