如何解决R中数据框bbject未找到错误

时间:2019-01-10 15:12:38

标签: r dataframe

我对导致错误消息的数据框有疑问 “找不到对象”。

我定义了两个函数Mom和ExpB,其中main中调用了ExpB 自己叫妈妈妈妈定义了找不到的对象“ Out”。 以下是相关的代码部分:

Mom <- function(x){ 
  Out.data = data.frame( 
    m  = mean(x),
    sx = sqrt( mean(x^2) - mean(x)^2 ),
    se = sqrt( mean(x^2) - mean(x)^2 ) / sqrt( length(x) )
  ) 
  return(Out)
}

ExpB <- function(Inp) {
    ...
    dA  = seq(1,ns)*0
    ...
    dA_mom = Mom(dA);   
    ...
}

线     输出= ExpB(Inp) 在主要导致消息: “ Mom(dA)中的错误:找不到对象'Out'”。

1 个答案:

答案 0 :(得分:0)

扩大我的评论。请注意,在没有看到ExpB的完整定义的情况下,很难知道这是否全部。在Mom的主体内部,创建一个名为Out.data的新对象。但是,Mom疲倦地返回了名为Out的物体。 Out中没有定义对象Mom,因此R告诉您找不到名为Out的对象。在Out调用中将Out.data更改为return将解决此问题,正如我在下面的Mom2中演示的那样。

> vec <- rnorm(10)
> 
> Mom1 <- function(x){ 
+   Out.data = data.frame( 
+     m  = mean(x),
+     sx = sqrt( mean(x^2) - mean(x)^2 ),
+     se = sqrt( mean(x^2) - mean(x)^2 ) / sqrt( length(x) )
+   ) 
+   return(Out)
+ }
> 
> Mom1(vec)
Error in Mom1(vec) : object 'Out' not found
> 
> Mom2 <- function(x){ 
+   Out.data = data.frame( 
+     m  = mean(x),
+     sx = sqrt( mean(x^2) - mean(x)^2 ),
+     se = sqrt( mean(x^2) - mean(x)^2 ) / sqrt( length(x) )
+   ) 
+   return(Out.data)
+ }
> 
> Mom2(vec)
          m       sx        se
1 0.1080265 1.111821 0.3515887