Birden fazla "bilinmeyen sütun" uyarısını düzeltme


171

Tüm komut türleri (örneğin, paketlere güncelleştirmeleri yüklemek için str (x)) için "bilinmeyen sütun" kalıcı bir çoklu uyarısı var ve bu hata ayıklama veya düzeltmek nasıl emin değilim.

"Bilinmeyen sütun" uyarısı, yeniden adlandırdığım bir tbl_df dosyasındaki bir değişkenle açıkça ilişkilidir, ancak uyarı, tbl_df ile alakasız görünen her türlü komutta görüntülenir (ör. X'in olduğu bir pakete güncellemeler yükleme, str (x) sadece bir karakter vektörü).


11
Sorunun belirsiz olduğunu anlıyorum, ama sorun da öyle görünüyor. Saçmalık bile yazabilirim (örneğin, yazım hatası) ve uyarıları alabilirim. Ben bir şekilde IDE ortamında kalıcı olduğunu tahmin ediyorum?
ssp3nc3r

1
Tam komutu ve çıktıyı gönderebilir misiniz lütfen?
konvas

3
Evet, RStudio'nun son sürümü. Ortamı temizledim, yeniden başlattım ve bir TBL_DF nesnesine yüklediğimde oluşmaya başlıyor. Sorunu as.data.frame'e dönüştürerek, her şeyi kapatarak ve daha sonra veri çerçevesini yeniden yükleyerek çözdüm. İleride, iki şeyi anlamak istiyorum: tbl_df kullanarak problemden nasıl kaçınılır ve uyarılar neden ortamda devam ediyor gibi görünüyor.
ssp3nc3r

1
Bende aynı hatayı alıyorum. FACEBOOK.1Data.frames öğelerinizden birinde bir sütun var mı ve df$FACEBOOK.1R komut dosyanızın herhangi bir yerinde mi çağırıyorsunuz ? Mütevazı tahminim, bunun tibblev1.1: blog.rstudio.org/2016/07/05/tibble-1-1'de sunulan pakette bir hata olması . Eğer var mı tibbleaçıkça yüklenmiş?
dpprdan

5
Bu da bana oluyor. Deseni birden çok bilgisayarda çoğaltabilirim, ancak bazı komutlardan sonra, örneğin kütüphane (Hmisc) veya dplyr ile bir veri çerçevesi oluştururken uyarı rastgele görünüyor. Uyarılar henüz yapmadığım sütunlara atıfta bulunuyor - bunları daha sonra kodumda yapıyorum. R ve Rstudio birkaç kez yeniden başlattım ve temiz kod çalıştırmak yardımcı olmaz. Bu nedir???
Nova

Yanıtlar:


58

Bu, RStudio'daki Teşhis aracıyla ilgili bir sorundur (kodunuzdaki uyarıları ve olası hataları gösteren araç). Şuna kısmen giderilmiştir işlemek RStudio v1.1.103 veya daha sonra tarafından @ Kevin-ushey . Düzeltme kısmi, çünkü uyarılar hala görünüyor (daha az sıklıkta olsa da). Bu sorun https://github.com/rstudio/rstudio/issues/7372 adresinde tekrarlanabilir bir örnekle bildirildi ve RStudio v1.4 çekme isteği (serbest bırakılacak) ile giderildi

Birkaç geçici çözüm vardır, tercih ettiğiniz çözümü seçin:

  • Tercihler / Kod / Tanılama'daki tüm dosyalar için kod tanılamayı devre dışı bırakın

  • Belirli bir dosya için tüm tanılamaları devre dışı bırakın:

    Açık dosyaların başlangıcına ekleyin:

     # !diagnostics off

    Sonra dosyaları kaydedin ve uyarıların görünmesi durmalıdır.

  • Uyarıyı oluşturan değişkenler için tanılamayı devre dışı bırakın

    Açık dosyaların başlangıcına ekleyin:

     # !diagnostics suppress=<comma-separated list of variables>

    Sonra dosyaları kaydedin ve uyarıların görünmesi durmalıdır.

Uyarılar, RStudio'daki tanılama aracı hataları algılamak için kaynak kodunu ayrıştırdığı ve tanılama denetimleri gerçekleştirdiğinde, tibble'ınızda başlatılmayan sütunlara erişerek, gördüğümüz Uyarıyı verdiği için görünür. Uyarılar ilgisiz şeyler çalıştırdığınız için görünmez, RStudio tanılaması yürütüldüğünde görünür (bir dosya kaydedildiğinde, daha sonra değiştirildiğinde, bir şey çalıştırdığınızda ...).


13
İyi karar. Bu benim için çalıştı RStudio 0.99, Araçlar> Global Seçenekler> Kod> Teşhis
Chris Holbrook

8
R 3.4.3 ile RStudio 1.1.383, sorun hala var.
MS Berends

4
1.1.423 sürümünde sorun devam ediyor. 'show diagnostics' işaretini kaldırmak harika çalışıyor
Adrian

2
Hala v1.1.456 var. İç çekmek.
geotheory

3
Eşik, Ubuntu'daki RStudio Sunucusunda R v3.5.1 ile RStudio v1.1.643 var.
RFelber

49

Aynı sorunla karşılaşmış olan ve bilmiyorum rağmen neden olayının gerçekleştiği, ben kestirmek mümkün olmuştur zaman o ortaya çıkar ve böylece gerçekleşmesini önler.

Sorun, dizin oluşturmadan türetilen yeni bir sütuna, bir temel R veri çerçevesine ve bir tibble veri çerçevesine ekleme ile ilgili gibi görünüyor. ageTemel R veri çerçevesine yeni bir sütun ( ) eklediğiniz bu örneği alın :

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

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

Uyarı vermeden çalışır. Ama aynı bir tibble ile yapıldığında, bir uyarı atar (ve sonuç olarak, garip, görünüşte anlaşılmamış, çoklu uyarı sorununa neden olur):

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' 

Bundan kaçınmanın kesinlikle daha iyi yolları var, ancak ilk olarak bir NAs vektörü oluşturmanın işi yaptığını buldum :

tibble_df$age <- NA

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

13
Cevabım açıkça tüm hikaye değil: Hala (çoklu) uyarıları alıyorum ve diğer yorumculardan bahsettiğim gibi, sinir bozucu kısım bunun belirgin keyfili. A tbl_df, uyarıları üretmek için gerekli gibi görünüyor, ancak bunun yeterli olduğundan emin değilim. Yani, tbl_dfs diğer tidyverse paketlerinden (örn. Tidyr, dplyr) işlevlerle birlikte kullanıldığında bu uyarının ortaya çıkabileceğini düşünüyorum . Böyle kritik bir paket için ödemek için küçük bir fiyat, ama yine de garip / can sıkıcı.
sabre

Bir NAs vektörü oluşturmak benim için çalıştı! (RStudio Sürüm 1.1.456, R sürüm 3.5.1)
petzi

Bazen sütun türünü belirtmek istiyorum, örneğin R Tarihleri ​​ve doldurursam NAdaha sonra doldurulan tarihler sayısal türe dönüştürülür.
Jiāgěng

1
@ Jiageng as.Date(NA_character_)verir NAsınıfı Date.
Stibu

Tibble'lar tasarım gereği verilerden daha kısıtlayıcıdır. Çerçeveler. Tasarım gereği, yalnızca bir bölümünü atayarak bir sütun başlatmanız gerekmeyebilir. Bununla birlikte, bu bir tasarım hatası değil, koruyucu bir özellikse, tibble atamasında bir kerelik erken bir hata çok tercih edilir.
vinnief

17

"Dplyr" paketini kullanırken bu sorunla karşılaştım.
"Dplyr" kitaplığında "group_by" işlevini kullandıktan sonra bu sorunla karşılaşanlar için:

Değişkenlerin çözülmesinin bilinmeyen sütun uyarı problemini çözdüğünü buldum. Bazen sorun çözülünceye kadar çözme işlemini birkaç kez tekrarlamak zorunda kaldım.


5

Sınıfı dönüştürmek data.framebenim için problemi çözdü:

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"

Kısmi komut dosyasını @ adts'tan ödünç aldım


mucizevi şekilde çalışır. Bir veri çerçevesine dönüştürmek ve sonra tekrar tibble dönüştürmek için herhangi bir olumsuz olduğunu merak ediyordum. Sadece kaybettiği uyarılar mı?
p130ter

1
Benim için işe yaramadı RStudio 1.1.442 hala eldeWarning message: Unknown or uninitialised column: 'bad_column'
andemexoax

3

Ben tibble ve lapply fonksiyonları ile birlikte çalışırken bu sorunu yaşadım. Tibble, şeyleri veri çerçevesi içinde bir liste olarak kaydetmiş gibiydi.

Tibble'a lapply fonksiyonunun sonuçlarını eklemeden önce unlist kullanarak çözdüm.


1

Ben de bir dyplyr blok kullanılarak oluşturulan bir tibble dışında bu sorunla karşılaştı. İşte aynı hataya nasıl geldiğimi göstermek için sabre kodunda küçük bir değişiklik var.

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

1

Diyelim ki aşağıdaki sütunları seçmek istedim

best.columns = 'id'

Benim için aşağıdakiler uyarıyı verdi:

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

Bu beklediğim gibi çalışsa da, bildiğim kadarıyla dplyraynı olmalı.

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

0

Bir sütunu paketi dplyr::renamekullanarak okuduktan sonra kullanarak yeniden adlandırdığımda bu uyarıları alıyorum readr.

Sütunun eski adı specöznitelikte yeniden adlandırılmaz . Böylece özelliği kaldırmak specuyarıları ortadan kaldırır . Ayrıca "spec_tbl_df" sınıfını kaldırmak iyi bir fikir gibi görünüyor.

attr(dat, "spec") <- NULL
class(dat) <- setdiff(class(dat), "spec_tbl_df")
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.