Функция [<-
может использоваться в вызовах типа 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