как заставить вектор в тибле? - PullRequest
2 голосов
/ 29 апреля 2020

Каков «правильный» способ привести вектор в тиббл? Я пытаюсь использовать тидиверс, и в нем, похоже, есть дыра.

Скажем, у меня есть вектор, который я хочу превратить в столбик с одной строкой (см. Один столбец). Согласно документации для tibble я должен иметь возможность использовать as_tibble_row() (ср. as_tibble_col() или as_tibble_column() *). Тем не менее, когда я пытаюсь вызвать эти функции, кажется, что они не существуют. Я установил и импортировал tidyverse v3.0.1 (который содержит tibble v2.1.3).

> as_tibble_row(c(a = 1, b = 2))
Error in as_tibble_row(c(a = 1, b = 2)) : 
  could not find function "as_tibble_row"
> as_tibble_col(c(a = 1, b = 2))
Error in as_tibble_col(c(a = 1, b = 2)) : 
  could not find function "as_tibble_col"
> as_tibble_column(c(a = 1, b = 2))
Error in as_tibble_column(c(a = 1, b = 2)) : 
  could not find function "as_tibble_column"

аналогично ??as_tibble_row, ??as_tibble_col, ??as_tibble_column не найдено результатов.

Когда я пробую просто as_tibble(), он дает мне столбец тиббла, но я получаю предупреждение

> as_tibble(c(a = 1, b = 2))
# A tibble: 2 x 1
  value
  <dbl>
1     1
2     2
Warning message:
Calling `as_tibble()` on a vector is discouraged, 
because the behavior is likely to change in the future. 
Use `tibble::enframe(name = NULL)` instead.

Использование enframe(), как предлагается, дает ожидаемый результат для столбца:

> tibble::enframe(c(a = 1, b = 2))
# A tibble: 2 x 2
  name  value
  <chr> <dbl>
1 a         1
2 b         2

Но я до сих пор не знаю, как привести вектор в одну строку. Чего мне не хватает (возможно, документация нуждается в обновлении, потому что она, кажется, ссылается на эти функции, которые, кажется, не существуют)?


* описанная функция для версии столбца в документации относится как as_tibble_column() в описании, но как as_tibble_col() в другом месте ...

Ответы [ 2 ]

2 голосов
/ 29 апреля 2020

Документация, на которую вы указываете, относится к версии 3.0.1 пакета (вы говорите, что используете 2.1.3):

enter image description here

> as_tibble_col(c(a = 1, b = 2))
# A tibble: 2 x 1
  value
  <dbl>
1     1
2     2
> as_tibble_row(c(a = 1, b = 2))
# A tibble: 1 x 2
      a     b
  <dbl> <dbl>
1     1     2

Файл NEWS сообщает, что эти функции были добавлены в версии 3.0.0.

2 голосов
/ 29 апреля 2020

Я думаю,

as_tibble(t(c(a = 1, b = 2)))

- это то, что вы ищете (хотя вы не указываете здесь точный желаемый результат).

> as_tibble(t(c(a = 1, b = 2)))
# A tibble: 1 x 2
      a     b
  <dbl> <dbl>
1     1     2
...