web-dev-qa-db-ja.com

dplyr :: 1つの列を選択し、ベクトルとして出力

dplyr::selectはdata.frameになりますが、結果が1列の場合にベクトルを返す方法はありますか?

現在、追加のステップ(res <- res$y)data.frameからベクターに変換するには、次の例を参照してください。

#dummy data
df <- data.frame(x = 1:10, y = LETTERS[1:10], stringsAsFactors = FALSE)

#dplyr filter and select results in data.frame
res <- df %>% filter(x > 5) %>% select(y)
class(res)
#[1] "data.frame"

#desired result is a character vector
res <- res$y
class(res)
#[1] "character"

以下のようなもの:

res <- df %>% filter(x > 5) %>% select(y) %>% as.character
res
# This gives strange output
[1] "c(\"F\", \"G\", \"H\", \"I\", \"J\")"

# I need:
# [1] "F" "G" "H" "I" "J"
57
zx8754

最善の方法(IMO):

library(dplyr)
df <- data_frame(x = 1:10, y = LETTERS[1:10])

df %>% 
  filter(x > 5) %>% 
  .$y

Dplyr 0.7.0では、現在pull()を使用できます。

df %>% filter(x > 5) %>% pull(y)
104
hadley

このようなもの?

> res <- df %>% filter(x>5) %>% select(y) %>% sapply(as.character) %>% as.vector
> res
[1] "F" "G" "H" "I" "J"
> class(res)
[1] "character"
7
LyzandeR

また試すことができます

res <- df %>%
           filter(x>5) %>%
           select(y) %>%
           as.matrix() %>%
           c()
#[1] "F" "G" "H" "I" "J"

 class(res)
#[1] "character"
3
akrun