2017-01-23 11 views
1

Во многих ответах здесь в SO, плакаты советуют избегать использования 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

ли вы [Google] (http://stackoverflow.com/questions/17559390/why-is-using- назначьте-плохо)? –

+0

Дубликат может содержать только «плохую» часть. Может быть, обходная часть его вопроса по-прежнему остается без ответа? –

+0

У меня было 2 вопроса. Вопрос, отмеченный как дубликат, не показывает хороших примеров того, как предотвратить это. –

ответ

1

Почему бы не просто продолжать использовать первоначальный список, но присвоить имена, которые вы хотите:

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

Спасибо за ваш ответ, но я имел в виду более общее решение, не только для конкретного случая. –