通过R中的变量将值传递给函数

Posted

技术标签:

【中文标题】通过R中的变量将值传递给函数【英文标题】:Passing value to Function through variables in R 【发布时间】:2021-07-18 12:10:05 【问题描述】:

我有以下数据框

library(dplyr)

vec1 = 1:10 vec2 = 11:20

df = data.frame(col1 = vec1, col2 = vec2)

x <- df %>% summarize(mu = mean(col1, na.rm=TRUE)) x

新建而不是直接在 mean 函数中使用 col1,我想先将 col1 保存到一个变量中,然后将该值传递给 mean。这就是我想做的事情。

library(dplyr)

vec1 = 1:10 vec2 = 11:20

df = data.frame(col1 = vec1, col2 = vec2)

var = df$col1

x <- df %>% summarize(mu = mean(var, na.rm=TRUE)) x

但是 R 不接受它并抛出以下错误。 错误:“x % summarise(mu = mean(var, na.rm=TRUE)) x”中出现意外符号

那么我如何通过变量将值传递给均值?

【问题讨论】:

不要忘记换行或 ; x之前 @Waldi 所述的错误仅仅是因为表达式末尾的x。它应该是不同的行 【参考方案1】:

您的代码可以正常工作,但我认为您想要做的是:

library(dplyr)

var = 'col1'
x <- df %>% summarize(mu = mean(.data[[var]], na.rm=TRUE))
x

【讨论】:

您能解释一下 .data[ ] 的用途吗? .data 用于将列存储为变量的子集 (var1)。这是动态的,如果您想对 col2 执行相同的计算,您只需更改 var = 'col2' 而无需更改代码。

以上是关于通过R中的变量将值传递给函数的主要内容,如果未能解决你的问题,请参考以下文章

通过引用将值类型变量传递给静态方法线程安全吗?

将值传递给java中的成员变量

将值/变量从 fancybox iframe 传递给父级

如何将变量传递给已经在 R 的参数中实现非标准评估的函数?

将值传递给 C 中的函数

如何将值传递给 CloudWatch 中的 Lambda 函数?