Как решить фрейм данных bbject не найдена ошибка в R - PullRequest
0 голосов
/ 10 января 2019

У меня проблема с фреймом данных, который приводит к сообщению об ошибке "объект не найден".

Я определяю две функции, Mom и ExpB, где ExpB вызывается в main сама зовет маму. Мама определяет объект "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);   
    ...
}

Линия Out = ExpB (Inp) в основном приводит к сообщению: Msgstr "Ошибка в маме (dA): объект 'Out' не найден".

1 Ответ

0 голосов
/ 10 января 2019

Расширение моего комментария. Обратите внимание, что, не видя полного определения ExpB, трудно понять, является ли это всем. Внутри тела Mom вы создаете новый объект с именем Out.data. Однако Mom устает возвращать объект с именем Out. Внутри Mom не определен объект Out, поэтому 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...