Проблемы с attach() в R

у меня есть список в R, который я приложил.

> attach(myList)
> summary(myList)
            Length Class      Mode     
grData      3      data.frame list     
maxDate     1      POSIXct    numeric  
query       1      -none-     character
newData     3      data.frame list     
updateQuery 1      -none-     function

Хорошо, мой список действительно прилагается

> search()
 [1] ".GlobalEnv"          "myList"          "package:xlsx"        "package:xlsxjars"   
 [5] "package:rJava"       "package:quantmod"    "package:TTR"         "package:xts"        
 [9] "package:zoo"         "package:tidyr"       "package:stringr"     "package:RPostgreSQL"
[13] "package:DBI"         "package:dplyr"       "tools:rstudio"       "package:stats"      
[17] "package:graphics"    "package:grDevices"   "package:utils"       "package:datasets"   
[21] "package:methods"     "Autoloads"           "package:base"   

Фрейм данных grData из моего списка содержит 11 строк:

> summary(myList$grData)
      date            application_id      value        
 Min.   :2016-10-01   Min.   : 7.0   Min.   :  5769  
 1st Qu.:2016-10-01   1st Qu.: 9.5   1st Qu.: 33113  
 Median :2016-10-01   Median :12.0   Median : 65821  
 Mean   :2016-10-01   Mean   :22.0   Mean   :106336  
 3rd Qu.:2016-10-01   3rd Qu.:37.5   3rd Qu.:108861  
 Max.   :2016-10-01   Max.   :49.0   Max.   :507376

Но когда я пытаюсь вызвать grData без myList, я получаю фрейм данных с 0 строками.

> summary(grData)
      date    application_id      value     
 Min.   :NA   Min.   : NA    Min.   : NA  
 1st Qu.:NA   1st Qu.: NA    1st Qu.: NA  
 Median :NA   Median : NA    Median : NA  
 Mean   :NA   Mean   :NaN    Mean   :NaN  
 3rd Qu.:NA   3rd Qu.: NA    3rd Qu.: NA  
 Max.   :NA   Max.   : NA    Max.   : NA  

УПД. В globalEnv нет объекта grData

> ls()
[1] "checkDbLag"  "con"         "i"           "newDate"     "myList"  "updateQuery"
[7] "x" 

Где может быть проблема?


person Slavka    schedule 25.10.2016    source источник


Ответы (1)


Использование attach() на самом деле не рекомендуется многими руководствами по стилю R (например, http://google-styleguide.googlecode.com/svn/trunk/google-r-style.html#attach), так как это может привести к неверным результатам.

Как предложено https://www.r-bloggers.com/to-attach-or-not-attach-that-is-the-question/ у вас есть три лучших варианта:

  1. Непосредственная ссылка на переменные (например, lm(ds$x ~ ds$y))
  2. Укажите кадр данных для команд, которые это поддерживают (например, lm(y ~ x, data=ds))
  3. Используйте функцию with(), которая возвращает значение любого оцениваемого выражения (например, with(ds,lm(y ~x))) (Также обратите внимание на функцию within(), которая похожа на with(), но возвращает измененный объект.)

Если вы все еще хотите использовать attach(), несмотря на все альтернативы, я предлагаю вам предоставить полностью воспроизводимый пример. Читая ваш код, кажется, что вы предоставляете неполный вывод (один раз вы ссылаетесь на свой список как myList, а другой раз ссылаетесь на него как RollingMau).

person Daniela Petruzalek    schedule 25.10.2016