从R中的函数中提取结果/变量
我创建了一个函数来对数据集上的变量进行数据分析。该函数计算每个变量的差异。我想提取每个vdiff,然后创建一个包含所有差异的向量vdiff vardata$Children,Children$diff在这里不起作用。我还研究了strvardata$Children,Children,仍然无法从函数中精确计算差异。理想情况下,我希望编写代码为每个变量提供diff值。您的函数返回ggplot2对象。考虑返回一些其他对象,比如ReTrvReList.您将能够部分匹配vlist变量中的值差和表从R中的函数中提取结果/变量,r,function,R,Function,我创建了一个函数来对数据集上的变量进行数据分析。该函数计算每个变量的差异。我想提取每个vdiff,然后创建一个包含所有差异的向量vdiff vardata$Children,Children$diff在这里不起作用。我还研究了strvardata$Children,Children,仍然无法从函数中精确计算差异。理想情况下,我希望编写代码为每个变量提供diff值。您的函数返回ggplot2对象。考虑返回一些其他对象,比如ReTrvReList.您将能够部分匹配vlist变量中的值差和表 如果这是
如果这是函数的最后一行,则不需要显式命名return。最后需要返回diff
var = function(dt, title){
m=count(dt)
vlist=list()
for (i in (1:dim(m)[1])){
m$"%Renew"[i]=sum(data$Renew==1 & dt ==m$x[i])/m$freq[i] *100
}
diff=max(m[,3]) - min(m[,3])
vlist=list(table=m, difference = diff)
print(ggplot(m, aes(x,m[,3])) + geom_point()+
theme(axis.text.x = element_text(angle = 60, hjust = 1), axis.title=element_text(size=14,face="bold")) +
labs(x=title, y="% Renew") + ylim(0,100))
return(diff)
}
然后,假设dt是data.frame,得到向量:
cols <- c("Product", "Purchase","Type","Freq","Gender","State","Income","Marital1","Children")
vdiff <- sapply(cols,function(x){var(dt[,x],x)})
此外,var和diff是基本的R函数,选择其他名称可能是明智的。您是否尝试在函数末尾添加returndiff?如果希望此向量作为输出,请记住在关闭函数的最后一个}之前使用returnvdiff。我尝试在函数末尾添加returndiff。然而,在这种情况下,ggplot不会显示。基本上,我希望函数自动生成ggplot。对于diff,我只希望它在我需要的时候出现。例如,当我创建一个向量vdiff时,当您运行ggplot而不将其保存为变量名时,它将自动包含所有difff,它将显示在您的计算机屏幕上。带有returnvdiff的函数还允许您访问此值。我还需要ggplot2图形。实际上,这个函数会自动生成ggplot图,这就是我想要的。现在,我还想提取变量diff。我试图添加returndiff作为函数的最后一行。但是,在这种情况下,ggplot不会显示。@user129343在这种情况下,请尝试将ggplot2调用包装到print语句中。非常感谢!这两个答案都有助于解决我的问题。但是,我只能选择一个。再次感谢您的帮助!diff也是一个基本函数。我想OP需要返回vlist。使用x$diff将部分匹配x$difference。
cols <- c("Product", "Purchase","Type","Freq","Gender","State","Income","Marital1","Children")
vdiff <- sapply(cols,function(x){var(dt[,x],x)})