r - 有没有一种方法可以使用作为 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)
解决方案
一个相当清晰的使用方法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(...)) 的具体危险是什么?
推荐阅读
- python - 如何在抓取网站 Python 时跳过标签下的项目
- osmnx - Google Colab 中的 osmNX
- php - 如何配置作曲家使用特定的拉取请求?
- html - 如何从悬停样式中排除某些类?
- c++ - 多行中的 C 宏函数参数
- android - 有没有办法在不显示对话框的情况下在 android 上使用指纹进行身份验证?
- design-patterns - Istio 服务网格部署到 Prod(设计/架构决策)
- java - 使用 Selenium 和 Java 计算日历中的日期范围
- firebase - Firestore 文档结构
- sql - 由于错误的变量类型,Cursorfetch 错误