एक अज्ञात चेतावनी "अज्ञात कॉलम" को ठीक करना


171

मेरे पास सभी प्रकार के आदेशों (जैसे, पैकेज पर अपडेट स्थापित करने के लिए str (x)) के लिए "अज्ञात कॉलम" की लगातार कई चेतावनी है, और यह सुनिश्चित नहीं है कि इसे कैसे डीबग करें या इसे ठीक करें।

चेतावनी "अज्ञात कॉलम" का स्पष्ट रूप से tbl_df में एक चर से संबंधित है जिसे मैंने नाम दिया था, लेकिन चेतावनी सभी प्रकार के आदेशों में आती है जो tbl_df से असंबंधित हैं (उदाहरण के लिए, पैकेज पर अपडेट स्थापित करना, str (x) जहां x है बस एक चरित्र वेक्टर)।


11
मुझे एहसास है कि सवाल अस्पष्ट है, लेकिन ऐसा लगता है कि समस्या है। मैं भी बकवास टाइप कर सकता हूं (उदाहरण के लिए, टाइपो) और चेतावनी प्राप्त कर सकता हूं। मैं यह अनुमान लगा रहा हूं कि यह आईडीई के माहौल में ही बना हुआ है, किसी तरह?
ssp3nc3r

1
क्या आप सटीक कमांड और कृपया प्राप्त होने वाले आउटपुट को पोस्ट कर सकते हैं?
कोनव्स

3
हाँ, RStudio का नवीनतम संस्करण। मैंने पर्यावरण को साफ किया, फिर से शुरू किया और जब मैं TBL_DF ऑब्जेक्ट में लोड करता हूं तो यह होने लगता है। मुझे लगता है कि इसे as.data.frame में परिवर्तित करके, सब कुछ बंद करके और फिर डेटा फ़्रेम को पुनः लोड करके समस्या को ठीक किया गया है। आगे बढ़ते हुए, मैं दो चीजों को समझना चाहता हूं: tbl_df का उपयोग करके समस्या से कैसे बचा जाए और पर्यावरण में चेतावनी क्यों बनी रहे।
ssp3nc3r 15

1
मुझे समान त्रुटि प्राप्त हो रही है। क्या FACEBOOK.1आपके किसी डेटा.फ्रेम में एक कॉलम है और क्या आप इसे df$FACEBOOK.1अपने आर स्क्रिप्ट में कहीं से कॉल करते हैं ? मेरा विनम्र अनुमान है कि यह tibblev1.1 में पेश किए गए पैकेज में एक त्रुटि है : blog.rstudio.org/2016/07/05/tibet-1-1 । क्या आपके पास tibbleस्पष्ट रूप से भरी हुई है?
dpprdan

5
मेरे साथ भी ऐसा हो रहा है। मैं कई कंप्यूटरों पर पैटर्न को पुन: पेश कर सकता हूं, लेकिन कुछ आदेशों के बाद बेतरतीब ढंग से चेतावनी दिखाई देती है, उदाहरण के लिए लाइब्रेरी (एचएमआईएससी) या dplyr के साथ एक डेटाफ्रेम बना रही है। चेतावनी उन स्तंभों का उल्लेख करती है जो मैंने अभी तक नहीं बनाए हैं - मैं उन्हें बाद में अपने कोड में बनाता हूं। मैंने R और Rstudio को कई बार पुनरारंभ किया है और कोड क्लीन चलाने से कोई मदद नहीं मिलती है। यह क्या है???
नोवा

जवाबों:


58

यह RStudio में डायग्नोस्टिक्स टूल के साथ एक समस्या है (वह टूल जो आपके कोड में चेतावनी और संभावित गलतियों को दिखाता है)। यह आंशिक रूप से तय किया गया था इस पर प्रतिबद्ध RStudio v1.1.103 में या बाद से @ केविन-ushey । फिक्स आंशिक है, क्योंकि चेतावनी अभी भी दिखाई देती है (यद्यपि कम आवृत्ति के साथ)। इस मुद्दे को https://github.com/rstudio/rstudio/issues/7372 पर एक प्रतिलिपि प्रस्तुत करने योग्य उदाहरण के साथ सूचित किया गया है और RStudio v1.4 पुल अनुरोध (जारी होने के लिए) पर तय किया गया है

कई वर्कअराउड उपलब्ध हैं, जो समाधान आप पसंद करते हैं उसे चुनें:

  • प्राथमिकता / कोड / डायग्नोस्टिक्स में सभी फाइलों के लिए कोड डायग्नोस्टिक्स को अक्षम करें

  • किसी विशिष्ट फ़ाइल के लिए सभी डायग्नोस्टिक्स अक्षम करें:

    खोली गई फ़ाइल की शुरुआत में जोड़ें:

     # !diagnostics off

    फिर फ़ाइलों को सहेजें और चेतावनी दिखाई देना बंद कर देना चाहिए।

  • चेतावनी का कारण बनने वाले चरों के लिए निदान को अक्षम करें

    खोली गई फ़ाइल की शुरुआत में जोड़ें:

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

    फिर फ़ाइलों को सहेजें और चेतावनी दिखाई देना बंद कर देना चाहिए।

चेतावनी दिखाई देती है क्योंकि RStudio में डायग्नोस्टिक्स टूल त्रुटियों का पता लगाने के लिए स्रोत कोड को पार्स करता है और जब यह डायग्नोस्टिक चेक करता है तो यह आपके टिबबल में कॉलम एक्सेस करता है जो इनिशियलाइज़ नहीं होते हैं, जो हम देखते हैं। चेतावनियाँ प्रकट नहीं होती हैं क्योंकि आप असंबंधित चीज़ों को चलाते हैं, वे तब दिखाई देते हैं जब RStudio डायग्नोस्टिक्स को निष्पादित किया जाता है (जब किसी फ़ाइल को सहेजा जाता है, तब संशोधित किया जाता है, जब आप कुछ चलाते हैं ...)।


13
अच्छा निर्णय। इसने मेरे लिए RStudio 0.99 में काम किया, अनचेक 'शो डायग्नोस्टिक्स फॉर आर' अंडर टूल्स> ग्लोबल ऑप्शन्स> कोड> डायग्नोस्टिक्स
क्रिस होलब्रुक

8
R 3.4.3 के साथ RStudio 1.1.383, समस्या अभी भी मौजूद है।
बजे MS Berends

4
संस्करण 1.1.423 के साथ समस्या अभी भी मौजूद है। अनियंत्रित 'शो डायग्नॉस्टिक्स' बहुत अच्छा काम करता है
एड्रियन

2
अभी भी मौजूद है v1.1.456। आह।
19

3
Sill, Ubuntu पर RStudio सर्वर पर R v3.5.1 के साथ RStudio v1.1.643 में मौजूद है।
आरएफलंबर

49

मैं एक ही समस्या का सामना कर रहा हूं, और हालांकि मुझे नहीं पता कि ऐसा क्यों होता है, जब ऐसा होता है, तो मैं नीचे पिन करने में सक्षम होता हूं और इस तरह इसे होने से रोकता हूं ।

यह मुद्दा एक नए स्तंभ में जोड़ने के साथ प्रतीत होता है, जो अनुक्रमणिका से प्राप्त होता है, एक बेस आर डेटा फ्रेम में बनाम टिबबल डेटा फ़्रेम में। इस उदाहरण को लें, जहां आप 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

13
मेरा जवाब स्पष्ट रूप से पूरी कहानी नहीं है: मैं अभी भी (एकाधिक) चेतावनियां प्राप्त कर रहा हूं, और जैसा कि अन्य टिप्पणीकारों ने कहा, निराशा वाला हिस्सा इसकी स्पष्ट मनमानी है। एक tbl_dfचेतावनी के उत्पादन के लिए आवश्यक प्रतीत हो रहा है, लेकिन मुझे यकीन है कि यह पर्याप्त है नहीं कर रहा हूँ। यही है, मुझे लगता है कि यह चेतावनी तब उभर सकती है जब tbl_dfएस का उपयोग अन्य tidyverse पैकेज (जैसे, tidyr, dplyr) के कार्यों के संयोजन में किया जाता है। पैकेजों के इस तरह के एक महत्वपूर्ण सूट के लिए भुगतान करने के लिए छोटी कीमत, लेकिन फिर भी अजीब / कष्टप्रद।
कृपाण

NAमेरे लिए काम करने का एक वेक्टर बनाना ! (RStudio संस्करण 1.1.456, R संस्करण 3.5.1)
पेटी

कभी-कभी मैं कॉलम के प्रकार को निर्दिष्ट करना चाहता हूं, जैसे आर डेट्स, और यदि मैं भरता हूं, तो NAबाद में भरे जाने वाले दिनांक संख्यात्मक प्रकार में बदल जाएंगे।
जिआगंज

1
@ Jiāgěng कक्षा के साथ as.Date(NA_character_)देता है । NADate
Stibu

डेटा की तुलना में तिब्ब्ल्स डिजाइन से अधिक प्रतिबंधात्मक हैं। यह डिज़ाइन द्वारा हो सकता है, कि आप केवल भाग को असाइन करके एक कॉलम शुरू करने वाले नहीं हैं। हालांकि, अगर यह एक सुरक्षात्मक विशेषता है और डिज़ाइन त्रुटि नहीं है, तो टिबबल असाइनमेंट में एक शुरुआती एक बार की त्रुटि बहुत बेहतर होगी।
वृहस्पति

17

मुझे "dplyr" पैकेज का उपयोग करते समय इस समस्या का सामना करना पड़ा है।
"Dplyr" लाइब्रेरी में "group_by" फ़ंक्शन का उपयोग करने के बाद इस समस्या का सामना करने वालों के लिए:

मैंने पाया है कि चर को अनग्रुप करने से अज्ञात कॉलम चेतावनी समस्या हल हो जाती है। कभी-कभी मुझे समस्या को हल करने तक कई बार अनग्रुपिंग के माध्यम से चलना पड़ता है।


5

कक्षा को 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"

@Adts से आंशिक स्क्रिप्ट उधार ली


यह एक जादू की तरह काम करता है। मैं सोच रहा था कि डेटा फ्रेम में इसे परिवर्तित करने के लिए कोई नकारात्मक पहलू है और फिर इसे वापस टिबबल में परिवर्तित करना है। क्या यह केवल चेतावनी है कि यह खो देता है?
p130ter

1
मेरे लिए काम नहीं किया RStudio 1.1.442 अभी भी हो रहा हैWarning message: Unknown or uninitialised column: 'bad_column'
andemexoax

3

मुझे यह समस्या थी जब एक साथ टिबबल और लेपली कार्यों से निपटना। टिबबल डेटाफ़्रेम के अंदर एक सूची के रूप में चीजों को बचाने के लिए लग रहा था।

मैंने टिबेबल के लिए एक लंगोटी फ़ंक्शन के परिणामों को जोड़ने से पहले अनलिस्ट का उपयोग करके इसे हल किया।


1

मैं इस समस्या में एक 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

1

मान लें कि मैं निम्नलिखित कॉलम का चयन करना चाहता था

best.columns = 'id'

मेरे लिए निम्नलिखित ने चेतावनी दी है:

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

हालांकि यह उम्मीद के मुताबिक काम किया, हालांकि, जहां तक ​​मुझे पता है dplyr, यह समान होना चाहिए।

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

0

मुझे ये चेतावनी मिलती है जब मैं पैकेज dplyr::renameका उपयोग करके पढ़ने के बाद किसी कॉलम का नाम बदल देता हूं readr

कॉलम का पुराना नाम specविशेषता में बदला नहीं गया है । इसलिए specविशेषता को हटाने से चेतावनी दूर हो जाती है। साथ ही "spec_tbl_df" क्लास को हटाना एक अच्छे विचार की तरह लगता है।

attr(dat, "spec") <- NULL
class(dat) <- setdiff(class(dat), "spec_tbl_df")
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.