r - 根据函数参数创建文件名,并根据函数中的条件创建文件名 - R
问题描述
我想在函数内部创建一些名称来自函数参数的文件。文件内容将根据从正文函数中读取的文件中的某些条件创建
set.seed(123)
dt <- data.frame(col1_mean = sample(1:10, 10, TRUE), col2_n = sample(1:10, 10, TRUE), Col3 = c("ID1", "ID1","ID2", "ID1","ID2", "ID1","ID2", "ID1", "ID1", "ID1"), col4 = sample(1:10, 10, TRUE))
get_file = function (var1, var2) {
#create file name based on the var1 and var2 and the content based on the condition in dt
paste0("my_text_", var1, "_", var2) = dt[Col3 == paste0(var2)] # select only rows with ID given by var2
}
例如,get_file("AB", "ID1") 应该创建文件:my_text_AB_ID1,它将是 dt1 的子集,仅包含 Col3 中 ID1 的行。
上面的代码不起作用。任何的想法 ?谢谢
解决方案
您可以这样做,assign
但请注意,从函数内将对象写入全局环境不是一个好习惯。
get_file = function (var1, var2) {
assign(paste0("my_text_", var1, "_", var2), dt[dt$Col3 == var2, ],
envir = parent.frame())
}
get_file("AB", "ID1")
my_text_AB_ID1
# col1_mean col2_n Col3 col4
#1 3 5 ID1 9
#2 3 3 ID1 3
#4 2 9 ID1 1
#6 5 3 ID1 5
#8 6 10 ID1 7
#9 9 7 ID1 9
#10 10 10 ID1 9
推荐阅读
- ruby-on-rails - Rails 4 编译供应商资产,但不编译 application.js 和 application.css
- javascript - 如何让这个 PRNG 生成范围内的数字?
- amazon-web-services - 如何使用 API Gateway v2 检查 http 请求方法
- javascript - JS setInterval 没有立即启动,但运行良好
- javascript - 使用 context.fillText 创建的文本在画布中不断变形
- mysql - 您不能在 FROM 子句中指定目标表 'inventory' 进行更新
- javascript - 无法在 Vuex 中使用 getter 获取商店状态,然后承诺
- javascript - 如何为句子的每个单词获得不同的悬停事件?
- matlab - 在 MATLAB 中的单个图形上创建 2 个图例框?
- symfony - Symony 3.0 BootStrap.php.cache 问题 - 缺少文件