首页 > 解决方案 > 如何在 R 中的 pmax() 中给出一个变量

问题描述

假设如果我有一个数据虹膜并且我想将 pmax() 应用于动态列列表。

Ex:
DT <- as.data.table(iris) 

example_column <- c("Petal.Width")

DT[, test_flag :=
     ifelse(pmax(substitute(example_column), Petal.Length) > 0, "Exclude", "Consider")]

但我无法将 example_column 作为动态参数传递给 pmax()。

标签: rdata.table

解决方案


如果您有超过 1 列,我们可以使用do.callwith 。.SDcolsexample_column

library(data.table)
DT <- as.data.table(iris) 
example_column <- c("Petal.Width")

DT[, test_flag := ifelse(do.call(pmax, .SD) > 0, "Exclude", "Consider"), 
                  .SDcols = c(example_column, 'Petal.Length')]

对于单列使用get就足够了。

DT[, test_flag :=
     ifelse(pmax(get(example_column), Petal.Length) > 0, "Exclude", "Consider")]

推荐阅读