如何构建和循环引用环境对象的一组表达式(没有列表结构)?[R]
我想以函数形式简化以下内容:如何构建和循环引用环境对象的一组表达式(没有列表结构)?[R],r,lapply,purrr,rlang,R,Lapply,Purrr,Rlang,我想以函数形式简化以下内容: write_file(s01e01, 's01e01.txt') write_file(s01e02, 's01e02.txt') write_file(s01e03, 's01e03.txt') write_file(s02e01, 's01e01.txt') ... 这些角色对象s01e01等都存在于名为s[01-05]e[01-03]的全局环境中。我知道我可以把它们都放在一个列表中,然后用*apply或purr函数将它们写入文件,但是有没有办
write_file(s01e01, 's01e01.txt')
write_file(s01e02, 's01e02.txt')
write_file(s01e03, 's01e03.txt')
write_file(s02e01, 's01e01.txt') ...
这些角色对象s01e01
等都存在于名为s[01-05]e[01-03]
的全局环境中。我知道我可以把它们都放在一个列表中,然后用*apply
或purr
函数将它们写入文件,但是有没有办法在函数中使用指定的字符串模式来引用它们的所有裸名
我知道我可以通过
使用
names您可以使用get()
代替convertStringToExpr()
函数。这将获得一个变量的值,该变量的名称为传递给它的字符串的名称。但是请记住,在全局名称空间中使用所有这些不同的变量不是一个好的做法。如果将所有这些对象都保存在一个(命名)列表中,那么使用起来就会容易得多。这至少是R-way。您可以使用get()
代替convertStringToExpr()
函数。这将获得一个变量的值,该变量的名称为传递给它的字符串的名称。但是请记住,在全局名称空间中使用所有这些不同的变量不是一个好的做法。如果将所有这些对象都保存在一个(命名)列表中,那么使用起来就会容易得多。至少是这样。你是对的,通过列表来实现它肯定更好,但感谢你将我调整到get()
,这正是我要搜索的。你是对的,通过列表来实现它肯定更好,但感谢你将我调整到get()
这正是我要搜索的。
names <- c('s01e01', 's01e02', 's01e03', ... , 's05e03')
files <- paste(names, 'txt', sep = '.')
write_txt_files <- function(names) {
files <- paste(names, 'txt', sep = '.'))
# 15 variables from s01e01 to s05e03
c1 <- c('01', '02', '03', '04', '05')
c2 <- c('01', '02', '03')
varnames <- paste0(paste0('s', c1), rep(paste0('e', c2), 5)) %>% sort
vectorized_write_file(convertStringToExpr(varnames), files)
# ^bare object ^strings
}