r - 在函数中定义输出名称
问题描述
我想手动定义函数的对象/输出的名称。我所拥有的一个非常简单的例子是:
x <- data.frame(name = c("A", "B", "C"),
value = c(50, 20, 100))
statistics <- function(data, name){
total <- data %>% mutate(New = value +50)
assign(paste0(name), data)
}
statistics(x, "NewName")
我想运行这个函数并定义要使用的数据和输出的名称。这个想法是为使用的每个数据集创建一个唯一命名的输出。
谢谢!
解决方案
一种方法是仅使用<-
而不是assign()
在函数调用中使用来分配数据。或者您可以使用assign,但您必须指定您希望对象也被分配的环境。如果它留空,它将进入函数环境。在函数中使用的一个警告assign()
是,如果它们具有相同的名称,它将覆盖全局环境中的其他对象。所以要小心你的对象名称。
x <- data.frame(name = c("A", "B", "C"),
value = c(50, 20, 100))
statistics <- function(data){
data %>% mutate(New = value +50)
}
Newname <- statistics(x)
statistics2 <- function(data, name){
total <- data %>% mutate(New = value +50)
assign(paste0(name), total, envir = .GlobalEnv)
}
statistics2(x, "NewName2")
在您的代码中稍加assign()
说明应该说总而不是数据。
推荐阅读
- angular - 输入字段未以 Angular 11 反应形式动态更新
- java - 弹簧清除序列发生器
- amazon-s3 - s3.createPresignedPost 不适用于 ec2 角色 - 您提供的 AWS 访问密钥 ID 在我们的记录中不存在
- swiftui - 弹出窗口没有正确关闭
- python - 按条件修改数据框中的列
- reactjs - 在material-ui中单击按钮后测试菜单消失(应用程序有效,测试无效)
- visual-studio-app-center - AppCenter 跟踪来自 Web 应用程序的错误和事件
- powershell - 通过在预设输出和可变输出之间等分空格来格式化输出
- angular - VSCode GraphQL 扩展 IntelliSense 在 Angular 11 应用程序中不起作用
- grails - Grails 插件支持哪个版本的 neo4j?