首页 > 解决方案 > 如何在函数内分配列?

问题描述

我在数据集ecr中有这个函数,它将一列ecr作为字符串并适当地更改每个值:

ctrc <- function(x) {
  (ecr[[x]]-mean(ecr[[x]]))/sd(ecr[[x]])
}

然后它将值打印到控制台。我想将此函数的结果分配给ecr中的一列。但是,我尝试过的任何事情都没有导致这种情况发生。一些例子:

ctrc <- function(x) {
  ecr$var2 <- (ecr[[x]]-mean(ecr[[x]]))/sd(ecr[[x]])
}
mctrc <- function(y) {
   mutate(ecr, var2=ctrc("y"))
}

我如何让这个功能工作,为什么这些版本不工作?

标签: r

解决方案


除非您有非常充分的理由,否则不要将列名作为输入传递给函数,而是传递值。

ctrc <- function(x) (x-mean(x))/sd(x)

然后您可以将其称为:

library(dplyr)
ecr %>% mutate(var2 = ctrc(y))

或多列

ecr %>% mutate(across(c(y, z), ctrc))

推荐阅读