存储一个对象供以后编写函数时使用
Store an object for later use when writing a function
我正在编写一个函数来帮助我对数据框进行子集化,然后将数据框提供给另一个操作。此函数的输出将是第二个操作的结果。但是,由于我仍然需要将清理过的数据框用于其他目的,我想知道我是否可以将这样的数据框存储在环境中以便以后调用它?
例如,
假设我有这个数据框。
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 添加到 return。否则,当我尝试将输出提供给另一个函数时,该函数的输出将包含 workingdf,这是我不想要的。
例如,在这种情况下,如果我想这样做,我需要函数的输出仅为整数。
my_fun(data, Var1) - 5
我希望我说清楚了。
非常感谢任何帮助!!
您可以 return 函数列表中包含您想要的结果。
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
您可以将 workingdf
存储在 attr
ibute 中。
mu_fuc <- function(df, condition) {
## clean dataset
condition <- eval(as.list(match.call())$condition, df)
workingdf <- subset(df, condition < 3)
## second action
result <- sum(condition)
attr(result, "workingdf") <- workingdf
return(result)
}
计算结果如常。
r <- mu_fuc(d, Var1)
r - 5
# [1] -1
# attr(,"workingdf")
# ID Var1
# 2 6 1
为了避免出于美观原因显示属性,请使用 as.numeric
as.numeric(r) - 5
# [1] -1
或
r2 <- as.numeric(mu_fuc(d, Var1))
r2 - 5
# [1] -1
要获取 workingdf
,请从属性中获取它。
wdf <- attr(mu_fuc(d, Var1), "workingdf")
wdf
# ID Var1
# 2 6 1
数据:
d <- data.frame(ID=5:6, Var1=c(3, 1))
我正在编写一个函数来帮助我对数据框进行子集化,然后将数据框提供给另一个操作。此函数的输出将是第二个操作的结果。但是,由于我仍然需要将清理过的数据框用于其他目的,我想知道我是否可以将这样的数据框存储在环境中以便以后调用它?
例如, 假设我有这个数据框。
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 添加到 return。否则,当我尝试将输出提供给另一个函数时,该函数的输出将包含 workingdf,这是我不想要的。
例如,在这种情况下,如果我想这样做,我需要函数的输出仅为整数。
my_fun(data, Var1) - 5
我希望我说清楚了。
非常感谢任何帮助!!
您可以 return 函数列表中包含您想要的结果。
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
您可以将 workingdf
存储在 attr
ibute 中。
mu_fuc <- function(df, condition) {
## clean dataset
condition <- eval(as.list(match.call())$condition, df)
workingdf <- subset(df, condition < 3)
## second action
result <- sum(condition)
attr(result, "workingdf") <- workingdf
return(result)
}
计算结果如常。
r <- mu_fuc(d, Var1)
r - 5
# [1] -1
# attr(,"workingdf")
# ID Var1
# 2 6 1
为了避免出于美观原因显示属性,请使用 as.numeric
as.numeric(r) - 5
# [1] -1
或
r2 <- as.numeric(mu_fuc(d, Var1))
r2 - 5
# [1] -1
要获取 workingdf
,请从属性中获取它。
wdf <- attr(mu_fuc(d, Var1), "workingdf")
wdf
# ID Var1
# 2 6 1
数据:
d <- data.frame(ID=5:6, Var1=c(3, 1))