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個參數。我如何獲得列表中所有變量的結果?