2017-01-23 46 views
1

在这里这么多的答案,海报建议避免使用assign()创建新的变量在循环中,像这样的代码this question转载这里:避免使用R中分配()

myDf <- mtcars 
splitVar <- factor(myDf$gear) 
levelsVar <- levels(splitVar) 
splitDataFrame <- split(myDf, splitVar) 
for (i in 1:length(levelsVar)) { 
    assign(paste0("newDataFrameGear", levelsVar[i]), data.frame(splitDataFrame[i])) 
} 
ls(pattern = "^newData") 

This post解释了为什么被认为是不好的做法,但还有什么其他选择可以防止这种情况发生?

+0

你有没有[谷歌](http://stackoverflow.com/questions/17559390/why-is-using-分配坏)? –

+0

副本可能只包含“坏”部分。难道他的问题的解决方法部分仍然没有答案? –

+0

我有2个问题。标记为重复的问题并未显示如何防止此问题的好例子。 –

回答

1

为什么不继续使用原来的名单,但分配的名称你想要的:

names(splitDataFrame) <- paste0("newDataFrameGear", 
           as.character(levels(splitVar))) 
+0

感谢您的回答,但我的意思是更通用的解决方案,不仅针对特定情况。 –