从R中的函数中提取结果/变量

从R中的函数中提取结果/变量,r,function,R,Function,我创建了一个函数来对数据集上的变量进行数据分析。该函数计算每个变量的差异。我想提取每个vdiff,然后创建一个包含所有差异的向量vdiff vardata$Children,Children$diff在这里不起作用。我还研究了strvardata$Children,Children,仍然无法从函数中精确计算差异。理想情况下,我希望编写代码为每个变量提供diff值。您的函数返回ggplot2对象。考虑返回一些其他对象,比如ReTrvReList.您将能够部分匹配vlist变量中的值差和表 如果这是

我创建了一个函数来对数据集上的变量进行数据分析。该函数计算每个变量的差异。我想提取每个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)})