R haven :: write_dta () длинные строки (strL) - PullRequest
0 голосов
/ 01 марта 2019

Мне нужно обработать файл .json, содержащий logdata, в файл .dta в R с помощью функции haven () (данные, содержащие тип, метки и все в конце).Сам файл содержит несколько строковых переменных, превышающих 5000 и более символов.К сожалению, функция haven (), похоже, не может написать символьные строки такой длины.Например:

library(haven)

longFun <- function(n) {
do.call(paste0, replicate(5000, sample(LETTERS, n, TRUE), FALSE))
}

longString <- data.frame(V1 = longFun(1), stringsAsFactors = F)

write_dta(longString, paste0(tempdir(), "\\longString.dta"))

выдает следующую ошибку:

Ошибка в write_dta_ (data, normalizePath (path, mustWork = FALSE), version = stata_file_format (version)): Записьошибка: предоставленное строковое значение было длиннее доступного размера хранилища указанного столбца.

Этот поток частично является дубликатом Сохраняет файлы .dta с длинными строками в R ,но предлагаемое решение переключиться на readstata13 :: save.dta13 () на данном этапе не является предпочтительным.

Разделение строк на разные столбцы также не является предпочтительным, поскольку они могут сильно различаться по длине, что может привести кк взрыву столбцов в наборе данных.Кроме того, определить разумную точку отсечения отнюдь не просто.

Поскольку Stata (начиная со Stata 13) поддерживает длинные строковые переменные (переменная strL), я хотел спросить, возможно ли каким-либо образом записать strL-переменные.с убежищем?

Лучи

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...