迭代数据帧时创建循环的名称

时间:2015-11-23 12:58:20

标签: r

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()

我的功能出错,我怀疑与上述有关。

  

粘贴错误(“cv_prediction”,x,sep =“”)&lt; - data.frame():
  赋值目标扩展为非语言对象

如果我想在我的函数中创建变量,这些变量是循环中x的当前值与其他字符串的串联,我该怎么做?

1 个答案:

答案 0 :(得分:1)

您可以考虑使用eval(请参阅doc)。

> varData <- function(x) {
+    eval(parse(text=paste('cv_prediction', x,' <<- data.frame()',sep='')))
+ }
> varData(3)
> ls()
[1] "cv_prediction3" "varData"
> class(cv_prediction3)
[1] "data.frame"

请注意,您可以直接找到您希望创建新对象的环境,而不是使用<<-运算符:

eval(parse(text=paste('cv_prediction', x,' <- data.frame()',sep='')),env=.GlobalEnv)