首页 > 解决方案 > 根据函数参数创建文件名,并根据函数中的条件创建文件名 - 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 的行。

上面的代码不起作用。任何的想法 ?谢谢

标签: rsubset

解决方案


您可以这样做,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

推荐阅读