разделите фрейм данных по фактору и назовите новый df по фактору и дополнительному описанию типа «new_dataframe (factor)» - PullRequest
0 голосов
/ 12 декабря 2018

Мне нужно split мой df на несколько новых df с помощью коэффициента через цикл.Проблема, фактор состоит из чисел, и новые df называются "1" "2" и так далее, это затрудняет вызов их для следующей части кода, ... Любая помощь, как я могу переименовать / назватьновые df´s.как new_df_1, new_df_2?

что у меня есть:

new_df<- split(df, df$cluster)
new_names <- as.character(unique(df$cluster))
for (i in 1:length(new_df))
{assign(new_names[i],new_df[[i]])}

Я также пытался lapply, но смог только сохранить, а не сделать df вГлобальная Окружающая среда, поскольку я фактически не нуждаюсь в этом сохраненном для позже.

new_df<- split(df, df$cluster)
lapply(names(new_df),function(nm)
write.csv(new_df[[nm]],paste("new_df",nm,".csv")))

Работает, но создает файл: new_df 1.csv

Спасибо за любые предложения!

Ответы [ 2 ]

0 голосов
/ 18 января 2019

cluster_list <- split(df, f = df$clust)

создает список кластеров, для управления списком используйте: lapply.

0 голосов
/ 12 декабря 2018

Если нам нужны объекты в глобальной среде, используйте list2env

names(new_df) <- paste(new_df, seq_along(new_df), sep="_")
list2env(new_df, envir = .GlobalEnv)

ПРИМЕЧАНИЕ. Не рекомендуется создавать несколько глобальных объектов.Вместо этого все может быть обработано как list ('new_df')


или с использованием assign

nm1 <- names(new_df) # after creating the names with `paste`
for (nm in nm1) {
      assign(nm,new_df[[i]])
 }
...