Ответ 1
Не проверен, но он должен работать (отредактирован после комментариев)
lapply(mylist, write, "test.txt", append=TRUE, ncolumns=1000)
У меня есть в R список, подобный этому:
> print(head(mylist,2))
[[1]]
[1] 234984 10354 41175 932711 426928
[[2]]
[1] 1693237 13462
Каждый элемент списка имеет различное количество его элементов.
Я хотел бы напечатать этот список в текстовом файле следующим образом:
mylist.txt
234984 10354 41175 932711 426928
1693237 13462
Я знаю, что могу использовать sink(), но он печатает имена элементов [[x]], [y], и я хочу его избежать. Кроме того, из-за различного количества элементов в каждом элементе списка невозможно использовать write() или write.table().
Не проверен, но он должен работать (отредактирован после комментариев)
lapply(mylist, write, "test.txt", append=TRUE, ncolumns=1000)
В комментариях к Nico я заметил, что некоторые люди сталкиваются с проблемами с сохранением списков, в которых есть списки. Я также столкнулся с этой проблемой с некоторыми из моих работ и надеялся, что кто-то найдет лучший ответ, чем то, что я нашел, но никто не ответил на их проблему.
Итак: @ali, @FMKerckhof и @Kerry единственный способ, которым я нашел сохранение вложенного списка, - использовать sink(), как и user6585653 (я попытался проголосовать за его ответ, но не смог). Это не лучший способ сделать это, так как вы связываете текстовый файл, что означает, что его можно легко переписать или другие результаты могут быть сохранены в этом файле, если вы не отмените приемник. Ниже приведен код.
sink("mylist.txt")
print(mylist)
sink()
Удостоверьтесь, что у вас есть приемник() в конце вашего кода, чтобы вы отменили приемник.
Другой способ
writeLines(unlist(lapply(mylist, paste, collapse=" ")))
Здесь другой способ использования раковины:
раковина (sink_dir_and_file_name); печать (yourList); Раковина()
в зависимости от ваших вкусов, альтернатива nico:
d<-lapply(mylist, write, file=" ... ", append=T);
Вот еще
cat(sapply(mylist, toString), file, sep="\n")
Я решаю эту проблему, смешивая приведенные выше решения.
sink("/Users/my/myTest.dat")
writeLines(unlist(lapply(k, paste, collapse=" ")))
sink()
Я думаю, что он хорошо работает
Формат не будет полностью таким же, но он записывает данные в текстовый файл, и R сможет перечитать их, используя dget
когда вы захотите получить их снова в виде списка.
dput(mylist, "mylist.txt")