R:比较(6)仅适用于原子和列表类型

数据挖掘 r
2021-10-12 17:50:23

我在 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)
      }
    }

我怎样才能摆脱错误?

1个回答

该代码有效并且不会导致错误。结果是一个变量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在函数中引用,您是否要定义递归函数?比递归调用应该有参数和函数一些返回值......

我的猜测是您尝试将函数定义与矩阵的元素进行比较,这会导致此错误。

如果这对您来说还不够,并且您解释了代码应该提供什么,我将尝试完成我的答案。