dplyr принуждает персонажей к факторам - PullRequest
2 голосов
/ 04 июля 2019

Я уверен, что есть веская причина для этого, которую я сейчас не нахожу, но ... почему dplyr приводит символы к факторам, даже если вы явно приводите символы к символу?

> letters
 [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s" "t" "u" "v" "w" "x" "y" "z"
> typeof(letters)
[1] "character"
> data.frame(
+   colA = as.character(letters), 
+   colB = as.character(LETTERS)
+ ) %>%
+   glimpse
Observations: 26
Variables: 2
$ colA <fct> a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z
$ colB <fct> A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z

1 Ответ

5 голосов
/ 04 июля 2019

Не dplyr приводит его к factor, а data.frame (base R конструктор), где по умолчанию используется stringsAsFactors = TRUE.Указание stringsAsFactors = FALSE устранит проблему

data.frame(
  colA = letters, 
  colB = LETTERS, stringsAsFactors = FALSE
)

ПРИМЕЧАНИЕ. Нет необходимости переносить as.character


Поскольку мы используем tidyverse, опция tibble, который будет иметь настройку по умолчанию stringsAsFactors = FALSE

tibble(colA = letters, colB = LETTERS)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...