Добавить столбцы в dataframe с начальным значением на основе списка dplyr - PullRequest
1 голос
/ 22 марта 2019

Если у меня есть вектор, давайте назовем его x:

x <- c('a', 'b', 'c', 'd', 'e')

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

df[,x] <- 0

Однако мне было любопытно, что такое dplyr.Спасибо!

1 Ответ

1 голос
/ 22 марта 2019

Функция [<- может использоваться в вызовах типа dplyr, хотя я не думаю, что она более элегантна. Я присваиваю 1, а не 0.

features <- 
structure(list(f1 = structure(1:2, .Label = c("blue", "geeen"
), class = "factor"), f2 = c(0, 0), a = c(0, 0)), row.names = c(NA, 
-2L), class = "data.frame")

features %>% `[<-`(TRUE, c("a","b","c"), 1)
     f1 f2 a b c
1  blue  0 1 1 1
2 geeen  0 1 1 1

Я обнаружил, что числовые присвоения столбцам факторов обрабатываются немного по-другому с помощью кодировки dplyr. Базовое присвоение [<- приведет к числовому значению, в то время как комбинированное использование "%>%" с "[<-" приведет к получению факторного класса: </p>

str( features %>% `[<-`(TRUE, "f1", 0) )
#--------------
'data.frame':   2 obs. of  3 variables:
 $ f1: Factor w/ 2 levels "blue","geeen": NA NA
 $ f2: num  0 0
 $ a : num  0 0
Warning message:
In `[<-.factor`(`*tmp*`, iseq, value = c(0, 0)) :
  invalid factor level, NA generated
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...