我在 R 中的以下代码的主题行中收到错误。
r<- matrix(c(2,4, 1,5,5,3, 4,5,1,2,3,4), nrow=3)
for (u in 1:nrow(r))
for (x in 1:ncol(r))
r_hat<- function(u,x) {
if (r_hat >r[u,x]) {
print(r[u,x]-r_hat)
}
}
我怎样才能摆脱错误?
我在 R 中的以下代码的主题行中收到错误。
r<- matrix(c(2,4, 1,5,5,3, 4,5,1,2,3,4), nrow=3)
for (u in 1:nrow(r))
for (x in 1:ncol(r))
r_hat<- function(u,x) {
if (r_hat >r[u,x]) {
print(r[u,x]-r_hat)
}
}
我怎样才能摆脱错误?
该代码有效并且不会导致错误。结果是一个变量r和一个函数的定义r_hat。
使用此代码段您会得到相同的结果(我删除了不相关的循环,您所做的是在循环中重复创建相同的函数)
> r<- matrix(c(2,4, 1,5,5,3, 4,5,1,2,3,4), nrow=3)
>
> r_hat<- function(u,x) {
+ if (r_hat >r[u,x]) {
+ print(r[u,x]-r_hat)
+ }
+ }
问题出在函数中,调用它后会出现上述错误。
> r_hat(0,0)
Error in r_hat > r[u, x] :
comparison (6) is possible only for atomic and list types
>
您r_hat在函数中引用,您是否要定义递归函数?比递归调用应该有参数和函数一些返回值......
我的猜测是您尝试将函数定义与矩阵的元素进行比较,这会导致此错误。
如果这对您来说还不够,并且您解释了代码应该提供什么,我将尝试完成我的答案。