创建一个变量来调用R中的data.frame

创建一个变量来调用R中的data.frame,r,dplyr,R,Dplyr,因此,我创建了一个程序,运行摘要和方差分析,并为我绘制一些图表。问题是,对于我使用的每个新数据帧,我需要更改公式中的变量。我想做的是在脚本的开头创建一个变量,分配给我感兴趣的列,然后程序执行以下工作: mydata <- Leaves.data.csv attach(mydata) str(mydata) var <- Leaves avgVaL <- group_by(mydata, Treatment, Medium, Treatment:Medium) %>%

因此,我创建了一个程序,运行摘要和方差分析,并为我绘制一些图表。问题是,对于我使用的每个新数据帧,我需要更改公式中的变量。我想做的是在脚本的开头创建一个变量,分配给我感兴趣的列,然后程序执行以下工作:

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)) 

mydata最后,我需要使用
quo()
函数,因为该函数引用了我的输入,而不是求值,因此(如果我理解正确的话)引用类似于在其他编程语言中调用,这意味着您直接从原始数据帧调用该变量,而不是创建一个新的变量。 同时,您必须使用
隐藏在感兴趣的函数内的每个调用后面,因为这会告诉函数计算已引用的变量(而不是再次引用)

更好的解释是:

守则:

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)) 

var参见
vignette(“编程”)
,或者可能是因为您按
Treatment:Medium
进行分组,它考虑了所有列(它们之间)?当你已经有了
groupby(mydata,Treatment,Medium)
时,你真的需要它吗?@AntoniosK它确实没有什么用处,但我发现它对于数据可视化很方便。至于删除,它不起作用。@A.Suliman这似乎提供了解决方案。我会处理它,如果我能让它工作,我会上传它。