如何在运行中命名变量?

是否有可能在飞行中创建新的变量名称?

我想从列表中读取数据框到最后带有数字的新变量。 像orca1,orca2,orca3 …

如果我尝试类似的东西

paste("orca",i,sep="")=list_name[[i]] 

我得到这个错误

 target of assignment expands to non-language object 

有没有其他的方法呢?

使用assign:

 assign(paste("orca",i,sep=""), list_name[[i]]) 

在我看来,你可能会更好的列表,而不是使用orca1orca2等,然后它将是orca[1]orca[2] ,…

通常情况下,你只是编制一个变量列表,只不过是一个数字而已,因为这个数字可以方便地稍后访问它们。

 orca <- list() orca[1] <- "Hi" orca[2] <- 59 

否则, assign就是你想要的。

不要创建数据框架。 保留列表,命名其元素,但不要附加它。

这样做的最大原因是,如果你随时随地创建变量,那么以后几乎总是要遍历每一个变量来执行一些有用的操作。 在那里,你将再次被迫迭代你在飞行中创建的每一个名字。

命名列表中的元素并遍历名称要容易得多。

就附件而言,它在R中的编程实践非常糟糕,如果不小心可能会导致很多麻烦。

另一个棘手的解决方案是命名列表元素并attach它:

 list_name = list( head(iris), head(swiss), head(airquality) ) names(list_name) <- paste("orca", seq_along(list_name), sep="") attach(list_name) orca1 # Sepal.Length Sepal.Width Petal.Length Petal.Width Species # 1 5.1 3.5 1.4 0.2 setosa # 2 4.9 3.0 1.4 0.2 setosa # 3 4.7 3.2 1.3 0.2 setosa # 4 4.6 3.1 1.5 0.2 setosa # 5 5.0 3.6 1.4 0.2 setosa # 6 5.4 3.9 1.7 0.4 setosa 

而这个选项?

 list_name<-list() for(i in 1:100){ paste("orca",i,sep="")->list_name[[i]] } 

它完美的作品。 在你的例子中,第一行是缺少的,然后给你错误信息。