У меня есть цикл, в котором на каждой итерации я генерирую именованный числовой вектор и добавляю содержимое в фрейм данных.Этот информационный кадр имеет одну строку для каждого вектора, и каждый столбец является уникальным словом.Поскольку разные векторы могут содержать разные слова, с каждой новой добавленной строкой может быть добавлен столбец, который для других строк является NA.
Однако, это очень медленный процесс, так как размер данных увеличивается, я думаю, потому чтофрейм данных копируется каждый раз, когда добавляется новая строка.Поэтому мой нынешний подход невозможен для развертывания в большом наборе данных (на моем ноутбуке ~ 650 строк из нескольких тысяч уникальных слов уже занимает часы)
Я нашел некоторые предлагаемые решения, такие как предварительное распределение памяти, ноэто не вариант для меня, так как я не знаю количество уникальных слов (столбцов) заранее.Кроме того, использование data.table должно быть более быстрым, но тогда проверка столбца затруднена, и мне нужен фрейм данных для последующего использования.
Это мой подход прямо сейчас:
# example vectors
named_num1 = c(alpha = 1, beta = 4, gamma =2)
named_num2 = c(alpha = 5, pi = 2, gamma = 18)
named_num3 = c(beta = 10, omega = 12, alpha = 2)
list_of_nums = list(named_num1,named_num2,named_num3)
df = data.frame()
# add vectors to dataframe
for (num in list_of_nums){
temp_df = data.frame(as.list(num))
df = dplyr::bind_rows(df, temp_df)
}
df[is.na(df)] = 0
Я отчасти заблудился от того, как улучшить это.У вас есть подход, который работает быстрее, но при этом вы можете добавлять столбцы?Большое спасибо за любую помощь!