在R中的data.frame列上循环
在下面的函数在R中的data.frame列上循环,r,loops,dataframe,lapply,R,Loops,Dataframe,Lapply,在下面的函数foo中,我想知道如何循环什么 foo <- function(data, what){ formula <- as.formula(paste('~', what)) dum <- data.frame(model.matrix(formula, data = data))[-1L] cbind(data, dum) } dat <- data.frame(number = -3:2, gender = rep(c("M","F"), 3), regi
foo
中,我想知道如何循环什么
foo <- function(data, what){
formula <- as.formula(paste('~', what))
dum <- data.frame(model.matrix(formula, data = data))[-1L]
cbind(data, dum)
}
dat <- data.frame(number = -3:2, gender = rep(c("M","F"), 3), region = rep(LETTERS[1:2],3))
foo如果我们需要创建新列
foo <- function(data, what){
formula <- as.formula(paste('~', what))
data.frame(model.matrix(formula, data = data))[-1]
}
what = c('gender', "region")
cbind(dat, do.call(cbind, lapply(what, foo, data = dat)))
# number gender region genderM regionB
#1 -3 M A 1 0
#2 -2 F B 0 1
#3 -1 M A 1 0
#4 0 F B 0 1
#5 1 M A 1 0
#6 2 F B 0 1
foo您的预期输出是什么,如果您只需要“dum”输出,那么在最后一步不要cbind
在这种情况下只需执行dum@Reza您是在更新“What”列还是在创建新列时使用“M”作为suffix@Reza这只是基于你的功能。我刚刚删除了cbind
@Reza,我明白了这一点,但在你的帖子中,你是在说what
,即dat[what]
foo <- function(data, what){
formula <- as.formula(paste('~', what))
data.frame(model.matrix(formula, data = data))[-1]
}
what = c('gender', "region")
cbind(dat, do.call(cbind, lapply(what, foo, data = dat)))
# number gender region genderM regionB
#1 -3 M A 1 0
#2 -2 F B 0 1
#3 -1 M A 1 0
#4 0 F B 0 1
#5 1 M A 1 0
#6 2 F B 0 1