【发布时间】:2023-03-04 13:17:01
【问题描述】:
在latest DataFramesMeta.jl package for Julia一个可以做
x = [:x1, :x2]
n = [:n1, :n2]
@transform(df, cols(x) = :y .+ cols(n))
它将输出x1 = y + x1 和x2 = y + x2 列。
问题是,如何在 R 中优雅地做到这一点?我可以这样做
library(dplyr)
df = data.frame(y = 1:3, n1 = 1:3, n2 = 1:3)
x = c("m1", "m2")
n = c("n1", "n2")
code = glue::glue_data(list(x=x, n=n), "{x}=y+{n}")
code = glue::glue("vars({paste(code, collapse=',')})")
mutate(df, !!!eval(parse(text=code)))
或在基地中
res = lapply(n, function(n) {
df$y + df[, n]
}) %>% data.frame
names(res) <- x
df = cbind(df, res)
但感觉很老套。欢迎data.table 和 Base 解决方案。
【问题讨论】:
标签: r dplyr data.table