首页 > 解决方案 > 在编写函数时存储一个对象以供以后使用

问题描述

我正在编写一个函数来帮助我对数据框进行子集化,然后将数据框提供给另一个操作。此函数的输出将是第二个操作的结果。但是,由于我仍然需要清理后的数据框用于其他目的,我想知道是否可以将此类数据框存储在环境中以便以后调用?

例如,假设我有这个数据框。

      ID   Var1
   1   5     3
   2   6     1

我的功能是这样的:

mu_fuc <- function(df, condition) {

#clean dataset
  condition <- eval(as.list(match.call())$condition, df)
  workingdf <- subset(df, condition < 3). ####I am trying to store this working dataframe for later use. 

#second action 
  result = sum(workingdf[condition]) 

#output of the function
  return(result) 
}

由于该函数的结果也将在以后使用,因此我无法添加 workingdf 来返回。否则,当我尝试将输出提供给另一个函数时,函数的输出将包含 workingdf,这是我不想要的。

因此,例如,在这种情况下,如果我想这样做,我需要函数的输出仅为整数。

my_fun(data, Var1) - 5

我希望我清楚自己。

任何帮助是极大的赞赏!!

标签: rfunctiontypesreferenceassign

解决方案


您可以从函数返回一个列表,其中包含您想要的结果。

mu_fuc <- function(df, condition) {
  #clean dataset
  condition <- eval(as.list(match.call())$condition, df)
  workingdf <- subset(df, condition < 3)
  
  #second action 
  result = sum(workingdf) 
  
  #output of the function
  return(list(result = result, workingdf = workingdf)) 
}

称它为:

output <- mu_fuc(df, Var1)

您可以使用运算符分离出结果$并单独处理它们。

output$result
output$workingdf

推荐阅读