根据文件名自动命名dataframe

根据文件名自动命名dataframe,r,R,如果我遵守将文件路径保存为带有公共前缀“file_u”的变量的约定,那么我似乎可以为read_rds()创建一个包装函数,该函数将根据文件路径名称中“file_u”之后的任何文本来命名我读取的文件 当我计算要读取的文件的名称时,我遇到了麻烦 library(here) library(readr) library(stringr) file_survey <- here("my_survey_2019.rds") my_read_rds <- function(file){

如果我遵守将文件路径保存为带有公共前缀“file_u”的变量的约定,那么我似乎可以为
read_rds()
创建一个包装函数,该函数将根据文件路径名称中“file_u”之后的任何文本来命名我读取的文件

当我计算要读取的文件的名称时,我遇到了麻烦

library(here)
library(readr)
library(stringr)

file_survey <- here("my_survey_2019.rds")

my_read_rds <- function(file){
  name <- deparse(substitute(file))
  name <- stringr::str_remove(name, "^file_")
  eval(name) <- readr::read_rds(file) # Does not work
}

my_read_rds(file_survey) # would ideally create a dataframe named `survey`
库(此处)
图书馆(readr)
图书馆(stringr)

文件\u调查您可以使用
assign

my_read_rds <- function(file){
  name <- deparse(substitute(file))
  name <- stringr::str_remove(name, "^file_")
  assign(name, readr::read_rds(file), envir=globalenv())
}

my_read_rds在R中不鼓励这种行为。函数不应该有“副作用”或在其作用域之外创建变量。做这件事的“正常”方法是
调查,这是一个好方法point@MrFlick“副作用”是一个函数式编程术语,但它不是在R中编程的唯一方式。例如,
data.table
不遵循函数式编程范式,但它是最流行的库之一。人们应该按照他们想要的方式进行编程,如果这对他们有意义或者他们有一个系统的话。