CountNew <- function(x){
if (x==0) y <- 1
return(y)
}
allCF$NewECount >- sapply(allCF$Count, CountNew)
使用上面的代码,如果allCF中的EquipCount中的值当前等于0,我想将其更改为1,同时保持其他值相同,然后保持其余值的值不等于0我通过str(rawCF)命令
确保这些是数字(而非因素)但后来我收到以下错误:
FUN中的错误(X [[i]],...):找不到对象'y'
是什么导致了这个问题?
答案 0 :(得分:0)
代码逻辑错误。
如果元素不满足x==0
怎么办?该函数将返回未定义的y。添加一行就可以解决它:
allCF <- data.frame(Count=c(0,0,-1))
CountNew <- function(x){
y=x
if (x==0) y = 1
return(y);
}
allCF$NewECount <- sapply(allCF$Count, CountNew)
allCF <- data.frame(Count=c(0,0,-1))
CountNew <- Vectorize(function(x){
if (x==0) return(1);
return(x);
}
)
allCF$NewECount <- sapply(allCF$Count, CountNew)
现在你可以直接CountNew(allCF$Count)
。