Подтвердить что ты не робот

R: печать списка в текстовый файл

У меня есть в 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().

4b9b3361

Ответ 1

Не проверен, но он должен работать (отредактирован после комментариев)

lapply(mylist, write, "test.txt", append=TRUE, ncolumns=1000)

Ответ 2

В комментариях к Nico я заметил, что некоторые люди сталкиваются с проблемами с сохранением списков, в которых есть списки. Я также столкнулся с этой проблемой с некоторыми из моих работ и надеялся, что кто-то найдет лучший ответ, чем то, что я нашел, но никто не ответил на их проблему.

Итак: @ali, @FMKerckhof и @Kerry единственный способ, которым я нашел сохранение вложенного списка, - использовать sink(), как и user6585653 (я попытался проголосовать за его ответ, но не смог). Это не лучший способ сделать это, так как вы связываете текстовый файл, что означает, что его можно легко переписать или другие результаты могут быть сохранены в этом файле, если вы не отмените приемник. Ниже приведен код.

sink("mylist.txt")
print(mylist)
sink()

Удостоверьтесь, что у вас есть приемник() в конце вашего кода, чтобы вы отменили приемник.

Ответ 3

Другой способ

writeLines(unlist(lapply(mylist, paste, collapse=" ")))

Ответ 4

Здесь другой способ использования раковины:

раковина (sink_dir_and_file_name); печать (yourList); Раковина()

Ответ 5

в зависимости от ваших вкусов, альтернатива nico:

d<-lapply(mylist, write, file=" ... ", append=T);

Ответ 6

Вот еще

cat(sapply(mylist, toString), file, sep="\n")

Ответ 7

Я решаю эту проблему, смешивая приведенные выше решения.

sink("/Users/my/myTest.dat")
writeLines(unlist(lapply(k, paste, collapse=" ")))
sink()

Я думаю, что он хорошо работает

Ответ 8

Формат не будет полностью таким же, но он записывает данные в текстовый файл, и R сможет перечитать их, используя dget когда вы захотите получить их снова в виде списка.

dput(mylist, "mylist.txt")