全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
2108 8
2017-05-01
R语言,函数两重调用,即  main调用函数F,F函数调用g函数,可以吗?如果main不调用F,可以运行,且结果正确;但是,改成main调用F,F调用g之后,就会报错:Error in B[j]=which.max(C[,j]) : replacement has length zero.
为什么呢?怎么解决?求大神帮忙

代码相关部分:
函数g :
....
return(A) A为矩阵

函数F:
C=g(...)
B=matrix(rep(0, n),nrow=1)
  for(j in 1:n){
    B[j]=which.max(C[,j])
  }



函数main:调用F
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2017-5-1 21:42:27
C是函數嗎?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-5-1 21:52:42
调用本身没有问题,函数调用自身都没有问题,不要说调用别的了。出错信息说得很清楚:
B[j]=which.max(C[,j])这一句中,which.max(C[,j])的长度为0,说明很可能是空值,你要找这方面的原因。
另外,你既然将B定义为一个矩阵,就要用矩阵的方式来引用,B[1, j]而不是B[j]
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-5-1 22:16:45
cheetahfly 发表于 2017-5-1 21:52
调用本身没有问题,函数调用自身都没有问题,不要说调用别的了。出错信息说得很清楚:
B[j]=which.max(C[, ...
先谢谢啦~对于你指出的问题,我都检查过:C不存在空值;B[1,j]也不影响
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-5-1 22:18:15
Eric1028 发表于 2017-5-1 21:42
C是函數嗎?
C是想表示函数g()的返回值A
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-5-2 07:44:41
你在for(j in 1:n){这一行之前,插入browser()。进入调试模式后,手动逐行执行B[j]=which.max(C[,j]),看错误是否重复。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群