Извлечь единственное значение из 1 x 1 data.frame, созданного с dplyr в качестве вектора? - PullRequest
0 голосов
/ 26 марта 2020

Я пытаюсь извлечь значение из 1 x 1 data.frame, созданного с помощью dplyr в качестве вектора

Пример

Предположим, у нас есть

library(dplyr)

df <- iris %>% summarise(ifelse(tally(.) == 150, 1, 0))

df
#   n
# 1 1

I ожидается, что df[1,1] вернет желаемый результат [1] 1 (т.е. вектор), но вместо этого он возвращает матрицу.

> df[1,1]
     n
[1,] 1

Примечания

  • Несколько странно, когда мы создайте подобный data.frame вручную, мы можем получить значение в виде вектора с .[1,1]
> data.frame(n=1) -> b
> b[1,1]
[1] 1

Ответы [ 2 ]

1 голос
/ 26 марта 2020

Вы можете получить вектор, используя df[[1,1]]

Вывод

> df[[1,1]]
[1] 1

Вот простой пример, который объясняет, как он работает, используя тестовые данные

df1 <- data.frame(a = c(1,2,3), b = c(4,5,6))

Выход

> df1['a']
  a
1 1
2 2
3 3
> df1[['a']]
[1] 1 2 3
0 голосов
/ 26 марта 2020

В дополнение к ответу @ sachin могут также работать два дополнительных метода

df %>% as.numeric
[1] 1

и

df %>% unlist %>% unname
[1] 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...