因此,我创建了一个程序,该程序运行摘要和方差分析,并为我绘制一些图形。问题是,对于我使用的每个新数据框,我都需要更改公式中的变量。我想做的是在分配给我感兴趣的列的脚本的开头创建一个变量,然后程序执行工作:
mydata <- Leaves.data.csv
attach(mydata)
str(mydata)
var <- Leaves
avgVaL <- group_by(mydata, Treatment, Medium, Treatment:Medium) %>%
summarise(count=sum(!is.na(var)), mean = mean(var, na.rm = T), sd = sd(var, na.rm=T), se = sd/sqrt(count))
我唯一想更改的是Leaves
。此代码的问题是summarise
将var
作为1个单个变量,并返回所有数据点而不是每个组的计数,均值,sd和se。
答案 0 :(得分:0)
最后,我需要使用quo()
函数,因为此函数引用我的输入而不是求值,因此(如果我理解正确),引用类似于在其他编程语言中的调用,这意味着您可以直接调用从原始数据框中获取该变量,而不是完全创建一个新变量。
同时,您必须在感兴趣的函数内部的每个调用之后使用!!
,因为这会告诉函数评估已引用的变量(而不是再次引用)。
更好地解释:https://cran.r-project.org/web/packages/dplyr/vignettes/programming.html
代码:
var <- quo(Root.growth)
avgVar <- group_by(mydata, Treatment, Medium)
%>% summarise(count=sum(!is.na(!!var)), mean = mean(!!var, na.rm = T), sd = sd(!!var, na.rm=T), se = sd/sqrt(count))