Фиксирование множественного предупреждения "неизвестный столбец"
У меня есть постоянное многократное предупреждение "неизвестного столбца" для всех типов команд (например, 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 в таблицу.