r - 在编写函数时存储一个对象以供以后使用
问题描述
我正在编写一个函数来帮助我对数据框进行子集化,然后将数据框提供给另一个操作。此函数的输出将是第二个操作的结果。但是,由于我仍然需要清理后的数据框用于其他目的,我想知道是否可以将此类数据框存储在环境中以便以后调用?
例如,假设我有这个数据框。
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
我希望我清楚自己。
任何帮助是极大的赞赏!!
解决方案
您可以从函数返回一个列表,其中包含您想要的结果。
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
推荐阅读
- java - Android USB 批量传输 Teensy2++ 更新缓慢
- javascript - 有没有办法将布尔值列表传递给 React 中的父元素?
- javascript - 如何搜索以逗号分隔的多个值
- html - 将元素移动到 div 的底部
- jenkins-pipeline - Jenkins Pipeline 共享库中的 AnsiColor 插件 - 使用问题
- mobile - 滑动手势在 Bootstrap 4 轮播中不起作用
- java - CAS服务器成功认证后如何使Spring安全将用户重定向到原始请求的页面
- java - 如何使用 Java 在 Android 中生成 Spinner?
- javascript - 计算数组中的对象 (HTML)
- rxjs6 - RXjs - 如何等待可观察 A 的新值,每次可观察 B 说可以开始“观看”