0
我需要将用户函数应用于data.frame的一部分。在之前的question我学会了使用lapply。我现在有一个需要2个参数的功能:带有多于一个参数的lapply中的R函数
truncar<-function(tbl, x){if(class(tbl[[x]])=='factor') {
tbl[,x]=as.character(tbl[[x]])
tbl[tbl[,x]=='**',x]<-0
tbl[,x]=as.numeric(tbl[[x]])}
tbl[is.na(tbl[,x]),x]<-0
y=ifelse(tbl[,x]>0,1,0)
return(y)}
此代码有效。一个例子表可能是:
df <- data.frame(A=c(-3:6, '**'), B=-1:9, C=c(-2:7,NA), D=factor(-3:7))
如果我把它应用到每次一列中,我得到了想要的结果:
> truncar(df, 'A')
[1] 0 0 0 0 1 1 1 1 1 1 0
但是,如果我尝试用lapply我很多变数做到这一点收到一条错误消息:
factors<-c('A', 'B', 'C')
lapply(df[,factors], truncar)
错误NextMethod( “[[”):参数 “X” 的缺失,没有默认设置
据我所知,这可能是由于我的功能需要2个参数。我如何获得列表中所有变量的结果?