如何解决R中无法使用返回函数
我已经创建了一个函数,然后返回一个名为final的对象,但是当我尝试访问该函数之外的对象时,会给我一个找不到错误对象的信息。
我不确定哪里出错了,这似乎很简单且正确,当我尝试排除函数并仅运行语句时,仅当尝试返回对象时,我才能访问最终对象无法做到这一点。
我不确定为什么会这样。
myfunction <- function(loan_number,X_train,y_train,X_test,y_test,pred){
loan_number<-as.numeric(testing$loan_num_srvcr)
xgb.train = xgb.DMatrix(data=X_train,label=y_train)
xgb.test = xgb.DMatrix(data=X_test,label=y_test)
explainer = buildExplainer(xgb,xgb.train,type="binary",base_score = 0.5,trees = NULL)
pred.breakdown = explainPredictions(xgb,explainer,X_test)
pred.breakdown<-as.data.frame(pred.breakdown)
pred.breakdown <- pred.breakdown %>% do(.[!duplicated(names(.))])
pred_break<-pred.breakdown %>%
#Create an id by row
dplyr::mutate(id=1:n()) %>%
#Reshape
pivot_longer(cols = -id) %>%
#Arrange
arrange(id,-value) %>%
#Filter top 5
group_by(id) %>%
dplyr::mutate(Var=1:n()) %>%
filter(Var<=5) %>%
select(-c(value,Var)) %>%
#Format
dplyr::mutate(Var=paste0('Attribute',1:n())) %>%
pivot_wider(names_from = Var,values_from=name) %>%
ungroup() %>%
select(-id)
pred_break<-as.data.frame(pred_break)
prop_score<-pred
final<-as.data.frame(cbind(loan_number,prop_score,pred_break))
print("final exec")
return(final)
}
myfunction(loan_number,pred)
final<-as.data.frame(final)
打印最终执行程序以检查是否一切正常,显然我无法访问传递给return语句的最终对象很奇怪。
请在o / p屏幕截图下方找到
解决方法
R主要是具有词法作用域的功能性编程语言。这行:
myfunction(loan_number,X_train,y_train,X_test,y_test,pred)
运行您的函数并返回final
的VALUE,但是它正在返回控制台。该函数的返回值需要分配给另一个变量才能使用,例如@Duck建议:
final <- myfunction(loan_number,pred)
这与您的函数中的final
不同。 final
在函数外部无法访问。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。