R中的函数:使用list参数作为字符串[duplicate]
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了R中的函数:使用list参数作为字符串[duplicate]相关的知识,希望对你有一定的参考价值。
这个问题在这里已有答案:
我正在编写一个使用list参数的函数。在这个函数中,我使用stack()
将列表转换为数据框。现在,我的问题是,如何使用函数参数中使用的列表名称重命名结果数据框(或任何其他数据框,如实际函数所需)的列?
我的功能:
stack_and_rename <- function(list) {
stacked_list <- stack(list)
names(stacked_list)[names(stacked_list)=='ind'] <- 'list'
stacked_list
}
虚拟列表:
fields <- list(A = c(2:4, 12:16, 24:28, 36:40, 48:49),
B = c(6:10, 18:22, 30:34, 42:46))
但是调用stack_and_rename(fields)
显然会返回一个带有'values'和'list'列的数据框,尽管我想得到'values'和'fields'。我必须做一些引用错误,但我无法得到解决方案。谢谢!
答案
我们可以使用deparse(substitute
的base R
stack_and_rename <- function(list) {
nm1 <- deparse(substitute(list))
stacked_list <- stack(list)
names(stacked_list)[names(stacked_list)=='ind'] <- nm1
stacked_list
}
stack_and_rename(fields)
或者与dplyr
library(dplyr)
stack_and_rename <- function(list) {
nm1 <- quo_name(enquo(list))
stacked_list <- stack(list)
stacked_list %>%
rename_at(vars('ind'), funs(paste0(nm1)))
#or
#rename(!! nm1 := ind)
}
stack_and_rename(fields) %>%
names
#[1] "values" "fields"
以上是关于R中的函数:使用list参数作为字符串[duplicate]的主要内容,如果未能解决你的问题,请参考以下文章