如果我有一个向量,我们称之为x:
x <- c('a', 'b', 'c', 'd', 'e')
我想说我也有一个数据帧df,这是一种为向量中的每个值创建列并将其初始化为某个值(例如0)的dplyr方法。我知道在R中这很简单,因为我可以执行以下操作:
df[,x] <- 0
但是我对dplyr方式感到好奇。 谢谢!
答案 0 :(得分:1)
[<-
函数可用于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编码对因子列的数字赋值处理有些不同。基本的[<-
赋值将强制转换为数字,而将“%>%”与“ [<-” witll的组合使用将导致因子类的:
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