Mam ciągłe wielokrotne ostrzeżenie o „nieznanej kolumnie” dla wszystkich typów poleceń (np. Str (x) do instalowania aktualizacji na pakietach) i nie wiem, jak to debugować lub naprawić.
Ostrzeżenie „nieznana kolumna” jest wyraźnie powiązane ze zmienną w tbl_df, której nazwę zmieniłem, ale ostrzeżenie pojawia się we wszystkich rodzajach poleceń pozornie niezwiązanych z tbl_df (np. Instalowanie aktualizacji w pakiecie, str (x), gdzie x to po prostu wektor znakowy).
FACEBOOK.1
kolumna jest w jednym z twoich data.frames i czy wywołujesz jądf$FACEBOOK.1
gdzieś w skrypcie R? Domyślam się, że jest to błąd wtibble
pakiecie wprowadzonym w wersji 1.1: blog.rstudio.org/2016/07/05/tibble-1-1 . Czytibble
wyraźnie załadowałeś?Odpowiedzi:
Jest to problem z narzędziem diagnostycznym w RStudio (narzędziu wyświetlającym ostrzeżenia i możliwe błędy w kodzie). Zostało to częściowo naprawione w tym zatwierdzeniu w RStudio v1.1.103 lub nowszym przez @ kevin-ushey . Poprawka jest częściowa, ponieważ ostrzeżenia nadal się pojawiają (choć z mniejszą częstotliwością). Ten problem został zgłoszony za pomocą odtwarzalnego przykładu pod adresem https://github.com/rstudio/rstudio/issues/7372 i został rozwiązany w żądaniu ściągnięcia RStudio v1.4 (do wydania)
Dostępnych jest kilka obejść, wybierz preferowane rozwiązanie:
Wyłącz diagnostykę kodu dla wszystkich plików w Preferencjach / Kod / Diagnostyka
Wyłącz całą diagnostykę określonego pliku:
Dodaj na początku otwieranych plików:
Następnie zapisz pliki, a ostrzeżenia powinny przestać się pojawiać.
Wyłącz diagnostykę zmiennych, które powodują ostrzeżenie
Dodaj na początku otwieranych plików:
Następnie zapisz pliki, a ostrzeżenia powinny przestać się pojawiać.
Ostrzeżenia pojawiają się, ponieważ narzędzie diagnostyczne w RStudio analizuje kod źródłowy w celu wykrycia błędów, a gdy przeprowadza testy diagnostyczne, uzyskuje dostęp do kolumn w tibble, które nie zostały zainicjowane, dając ostrzeżenie, które widzimy. Ostrzeżenia nie pojawiają się, ponieważ uruchamiasz niepowiązane rzeczy, pojawiają się one podczas wykonywania diagnostyki RStudio (gdy plik jest zapisywany, a następnie modyfikowany, gdy coś uruchamiasz ...).
źródło
Napotkałem ten sam problem i chociaż nie wiem, dlaczego się pojawia, byłem w stanie określić, kiedy się pojawia, a tym samym zapobiec temu.
Wydaje się, że problem polega na dodaniu nowej kolumny, pochodzącej z indeksowania, w podstawowej ramce danych R w porównaniu z ramką danych tibble. Weźmy ten przykład, w którym dodajesz nową kolumnę (
age
) do podstawowej ramki danych R:Działa bez zwracania ostrzeżenia. Ale kiedy to samo zostanie zrobione z tibble, generuje ostrzeżenie (i w konsekwencji, myślę, że powoduje dziwny, pozornie niesprowokowany, wielokrotny problem z ostrzeżeniem):
Z pewnością istnieją lepsze sposoby na uniknięcie tego, ale odkryłem, że pierwsze utworzenie wektora
NA
s działa:źródło
tbl_df
Wydaje się być konieczne do produkcji ostrzeżenia, ale nie jestem pewien, że to wystarczy. To znaczy, myślę, że to ostrzeżenie może pojawić się, gdytbl_df
s używane są w połączeniu z funkcjami z innych pakietów tidyverse (np. Tidyr, dplyr). Niewielka cena za tak krytyczny pakiet pakietów, ale mimo to dziwna / irytująca.NA
s zadziałało! (RStudio wersja 1.1.456, R wersja 3.5.1)NA
, daty wypełnione później zostaną przekonwertowane na typ liczbowy.as.Date(NA_character_)
dajeNA
z klasąDate
.Napotkałem ten problem podczas korzystania z pakietu „dplyr”.
Osoby, które mają do czynienia z tym problemem po użyciu funkcji „group_by” w bibliotece „dplyr”:
Odkryłem, że rozgrupowanie zmiennych rozwiązuje problem z ostrzeżeniem o nieznanej kolumnie. Czasami musiałem kilka razy powtarzać rozgrupowanie, aż problem zostanie rozwiązany.
źródło
Przekształcenie klasy w
data.frame
rozwiązany problem dla mnie:Wypożyczono częściowy skrypt z @adts
źródło
Warning message: Unknown or uninitialised column: 'bad_column'
Miałem ten problem, gdy miałem do czynienia z funkcjami tibble i lapply. Wydawało się, że tibble zapisuje elementy jako listę wewnątrz ramki danych.
Rozwiązałem to, używając unlist przed dodaniem wyników funkcji lapply do tibble.
źródło
Natknąłem się również na ten problem, z wyjątkiem tibble utworzonego za pomocą bloku dyplyra. Oto niewielka modyfikacja kodu Sabre, aby pokazać, jak doszedłem do tego samego błędu.
źródło
Powiedzmy, że chciałem wybrać następujące kolumny
Dla mnie następujące ostrzeżenie dało:
Chociaż działało to zgodnie z oczekiwaniami, chociaż, o ile wiem
dplyr
, powinno być identyczne.źródło
Otrzymuję te ostrzeżenia, gdy zmieniam nazwę kolumny przy użyciu
dplyr::rename
po przeczytaniu jej przy użyciureadr
pakietu.Stara nazwa kolumny nie została zmieniona w
spec
atrybucie. Usunięciespec
atrybutu sprawia, że ostrzeżenia znikają. Usunięcie klasy „spec_tbl_df” wydaje się dobrym pomysłem.źródło