【发布时间】:2020-06-06 03:59:32
【问题描述】:
我正在尝试编写与 SAS 中的宏执行类似任务的 R 函数,例如
- 过程变量
- 命名一个新变量
- 命名一个新的数据框
我已经尝试了一些使用内置 df "iris" 和 dplyr 的基本功能,如下所示。
函数 f3 和 f4 尝试接收变量名并对其进行处理。错误消息是“错误:找不到对象'物种'”和“在 mean.default(var) 中:参数不是数字或逻辑:返回 NA”。
函数 f5 和 f6 尝试命名新变量或新 df。运行函数后,新变量或 df 以参数名称命名。
f7 尝试使用函数命名变量的一部分。
library(dplyr)
data(iris)
view(iris)
### Char Variable
f3 <- function(var){
iris %>% filter(var == "setosa")
}
f3(Species)
f4 <- function(var){
iris %>% summarise(
avg = mean(var)
)
}
f4("Sepal.Length")
### Variable Name
f5 <- function(name){
iris %>%
mutate(name = 1)
}
f5("newname")
### df Name
f6 <- function(dfname){
dfname <- iris
}
f6("newdf")
f7 <- function(name){
test <- iris %>%
mutate(
v_name = 1
)
}
f7("1")
【问题讨论】:
-
如果要在全局环境中分配新对象,请在
f6中使用assign(dfname, iris, envir = .GlobalEnv)
标签: r function dplyr arguments user-defined-functions