Фиксирование множественного предупреждения "неизвестный столбец"

У меня есть постоянное многократное предупреждение "неизвестного столбца" для всех типов команд (например, str (x) для установки обновлений пакетов), и не уверен, как отладить это или исправить.

Предупреждение "неизвестный столбец" явно связано с переменной в tbl_df, которую я переименовал, но предупреждение появляется во всех видах команд, которые, по-видимому, не связаны с tbl_df (например, установка обновлений на пакете, str (x) где x - вектор символов).

Ответ 1

Обновление: эта проблема была частично исправлена при этой фиксации в RStudio v1.1.103 или более поздней версии @kevin-ushey. Это все еще появляется (хотя с меньшей частотой).

Это проблема со средством диагностики в RStudio (средство, которое показывает предупреждения и возможные ошибки в вашем коде).

https://support.rstudio.com/hc/en-us/community/posts/115001180488-Diagnostics-and-tibble-warning

В качестве обходного пути вы можете добавить в начале открытого файла (ов):

# !diagnostics off

Затем сохраните файлы, и предупреждения должны перестать появляться.

Вы также можете просто отключить диагностику в Предпочтения/Код/Диагностика.

Я полагаю, что предупреждения появляются, потому что диагностический инструмент в RStudio анализирует исходный код, чтобы обнаружить ошибки, и когда он выполняет диагностические проверки, он обращается к столбцам в вашей таблице, которые не инициализированы, и выдает предупреждение, которое мы видим. Предупреждения не появляются, потому что вы запускаете несвязанные вещи, они появляются, когда выполняется диагностика RStudio (когда файл сохраняется, затем изменяется, когда вы что-то запускаете...).

Ответ 2

Я столкнулся с одной и той же проблемой, и хотя я не знаю, почему это происходит, я смог зафиксировать ее, когда это происходит, и таким образом предотвратить ее.

Кажется, что проблема связана с добавлением нового столбца, производного от индексирования, в базовый фрейм данных R или в виде кадра данных. Возьмите этот пример, когда вы добавляете новый столбец (age) в базовый кадр данных R:

base_df <- data.frame(id = c(1:3), name = c("mary", "jill","steve"))

base_df$age[base_df$name == "mary"] <- 47

Это работает, не возвращая предупреждения. Но когда то же самое делается с тибетом, оно выдает предупреждение (и, следовательно, я думаю, что вы вызываете странную, казалось бы, неспровоцированную проблему с несколькими предупреждениями):

library(tibble)

tibble_df <- tibble(id = c(1:3), name = c("mary", "jill","steve"))

tibble_df$age[tibble_df$name == "mary"] <- 47

Warning message:
Unknown column 'age' 

Есть, конечно, лучшие способы избежать этого, но я обнаружил, что сначала создание вектора NA выполняет задание:

tibble_df$age <- NA

tibble_df$age[tibble_df$name == "mary"] <- 47

Ответ 3

Я столкнулся с этой проблемой при использовании пакета "dplyr".
Для тех, кто сталкивается с этой проблемой после использования функции "group_by" в библиотеке "dplyr":

Я обнаружил, что разгруппирование переменных решает проблему предупреждения о неизвестном столбце. Иногда мне приходилось многократно повторять разгруппировку, пока проблема не будет решена.

Ответ 4

Преобразование класса в data.frame решило проблему для меня:

library(dplyr)
df <- data.frame(id = c(1,1:3), name = c("mary", "jo", "jill","steve"))
dfTbl <- df %>%
  group_by(id) %>%
  summarize (n = n())
class(dfTbl) # [1] "tbl_df"     "tbl"        "data.frame"
dfTbl = as.data.frame(dfTbl)
class(dfTbl) # [1] "data.frame"

Заимствовал частичный script из @adts ​​

Ответ 5

Я столкнулся с этой проблемой, кроме как через кусок, созданный с помощью блока dyplyr. Здесь небольшая модификация кода сабли, чтобы показать, как я пришел к той же ошибке.

library(dplyr)

df <- data.frame(id = c(1,1:3), name = c("mary", "jo", "jill","steve"))

t <- df %>%
  group_by(id) %>%
  summarize (n = n())

t
str(t)


t$newvar[t$id==1] <- 0

Ответ 6

Скажем, я хотел выбрать следующий столбец (ы)

best.columns = 'id'

Для меня следующее предупреждение:

df%>% select_(one_of(best.columns))

Пока это работало так, как ожидалось, хотя, насколько я знаю dplyr, это должно быть одинаковым.

df%>% select_(.dots = best.columns)

Ответ 7

Я новичок в R.

Пока я выполняю приведенный ниже фрагмент кода в файле user-guide.rmd

 target    = "y",
 index_var = "index",
 name      = "example") %>% 
 add_holdout_samples(splits = c(.6, .2, .2)) %>% 
  set_measure(RMSE) %>% 
  add_model(pipe      = NULL, 
  method    = "auto.arima",
  param_map = list(lambda = c(0, .5, 1)),
  uid = "auto-arima") %>% 
  add_model(pipe      = roll_pipe, 
  method    = "auto.arima",
  param_map = list(),
  uid = "auto-arima-roll") %>% 
  add_model(pipe      = NULL, 
  method    = "ets",
  param_map = list(),
  uid = "ets") %>% 
  train_models()
map_df(f1$models, "status")

Failed to create bus connection: No such file or directory
Warning in log(x) : NaNs produced
Warning in log(x) : NaNs produced
Warning in InvBoxCox(pred$pred, lambda, biasadj, var(residuals.Arima(object),  :
  biasadj information not found, defaulting to FALSE.
Warning in InvBoxCox(pred$pred, lambda, biasadj, var(residuals.Arima(object),  :
  biasadj information not found, defaulting to FALSE.
Warning in InvBoxCox(pred$pred, lambda, biasadj, var(residuals.Arima(object),  :
  biasadj information not found, defaulting to FALSE.
Quitting from lines 534-559 (User-Guide.Rmd) 
Error: processing vignette 'User-Guide.Rmd' failed with diagnostics:
Unknown column NA 

Ответ 8

может быть, есть пробел в столбце в конце или в начале столбца. Это также вызывает неизвестную ошибку столбца. Я столкнулся с подобной ошибкой в файле R уценки.

Ответ 9

У меня была эта проблема, когда я имел дело с функциями tibble и lapply вместе. Тибл, казалось, сохранял вещи как список внутри фрейма данных.

Я решил это с помощью unlist перед добавлением результатов функции lapply в таблицу.