mylist <- list(demographic_vars, usage_engagement_vars, billing_contracttype_vars, contract_type_vars)
mylist中的每个变量都是一个数据框。
我正在编写一个传递给lapply()的函数。我想遍历mylist并命名一个变量,如下所示:
varData <- function(x) {
paste('cv_prediction',x,sep='') <- data.frame()
}
上面的目标是这样的(例如,对于第一次迭代)
cv_predictiondemographic_vars <- data.frame()
我怀疑我的功能与上述错误有关。
paste(“ cv_prediction”,x,sep =“”)中的错误<-data.frame():
分配目标扩展为非语言对象
如果要在函数中创建将x的当前值串联到其他字符串的变量,我该怎么做?
这很棘手。通常,您可以这样编写函数:
varData = function(x) {
name = paste0('cv_prediction', deparse(substitute(x), backtick = TRUE))
assign(name, x, parent.frame())
}
这样调用时有效,例如:
varData(some_data_frame)
但是,它不会有一个循环变量工作,因为它将使用的名称是可变的。据我所知,没有办法真正实现您想要的。相反,您需要list
在上面的代码中用其他内容替换:
named_list = function (...) {
names = sapply(match.call()[-1], deparse, backtick = TRUE)
setNames(list(...), names)
}
然后使用它:
mylist = named_list(demographic_vars, usage_engagement_vars, billing_contracttype_vars, contract_type_vars)
这将导致mylist
其值由对象命名。例如:
a = 1
b = 2
named_list(a, b)
# $a
# [1] 1
#
# $b
# [1] 2
现在,您可以开始在代码中使用列表的名称。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句