делая сложный ямл из R - PullRequest
3 голосов
/ 16 июня 2011

Я пытаюсь создать файл формата yaml из R. Я знаю, что есть пакет для такой работы, но его пример очень прост, и мой объект немного сложнее !!

, поэтому я быхотел бы сделать что-то вроде следующего, но я не знаю, как я должен сформировать его как объект R (dataframe?!):

tree:
  format: newick
  translate: ./My_example-1.translation
  file: ./Xtol_example-1.tree
tracks:
  - class: colorstrip
    source: ./My_example-1.catdomain

    rel_height: 0.6
    title: Catalytic domain
  - class: colorstrip
    source: ./My_example-1.kingdom
    rel_height: 0.6
    title: Itsname
  - class: colorstrip
    source: ./My_example-1.temp

Ответы [ 2 ]

4 голосов
/ 22 июня 2011

Мой короткий совет - не используйте yaml с R.

(Примечание редактора: похоже, что проблемы, задокументированные здесь, с тех пор были исправлены - см. Комментарии.)

Выпуск 1

Пакет yaml в R кажется непригодным для использования, но реальная проблема, похоже, связана с R. Но опять же, я не беспокоился о yaml, пока не увидел этот вопрос, так что, возможно, в моем понимании весь выпуск.

Чтобы успешно создать рассматриваемый yaml, в какой-то момент нам понадобится вектор списков, который не является списком (для дорожек ). Я думаю, что в R. нет способа сделать это. Как только мы добавляем элементы в вектор, которые являются списками, вектор превращается в список. Я предполагаю, что вектор может принимать только элементы фиксированного размера (следовательно, упрощенные операции, следовательно, хорошая производительность и, следовательно, обилие советов по векторизации).

Для простых атомарных типов, таких как числовые, целочисленные и т. Д., Я предполагаю, что интерпретатор R уже знает об их размере (который является фиксированным). Но если элемент является списком, то эта роскошь теряется, и вектор преобразуется в список, чтобы он мог работать с различными размерами элементов (списков).

Следовательно, не может быть вектора списков, который не является списком, и у нас есть серьезные проблемы с преобразованием данных в yaml в R.

Выпуск 2

Пакет R yaml плохо документирован, и я не могу понять, как он решает проблему. Я догадался, что он мог использовать соглашение, чтобы обойти это. Поэтому я попытался сделать следующее (и этот подход также решил бы вашу проблему) - импортировать yaml как объект R, а затем попытаться преобразовать этот объект R в yaml.

library("yaml")
z <- yaml.load(
"tree:
  format: newick
  translate: ./My_example-1.translation
  file: ./Xtol_example-1.tree
tracks:
  - class: colorstrip
    source: ./My_example-1.catdomain

    rel_height: 0.6
    title: Catalytic domain
  - class: colorstrip
    source: ./My_example-1.kingdom
    rel_height: 0.6
    title: Itsname
  - class: colorstrip
    source: ./My_example-1.temp")
names(z)
names(z$tracks)
y <- as.yaml(z)

как вы видите, это не работает. Я думаю, что вы можете избавить себя от боли, не пытаясь использовать yaml с R. Вы могли бы подумать об использовании XML или чего-то подобного.

2 голосов
/ 16 июня 2011

Из CRAN:

http://cran.r -project.org / web / packages / yaml / index.html

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

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