একাধিক সতর্কতা "অজানা কলাম" ঠিক করা


169

আমার কাছে সমস্ত ধরণের কমান্ডের (যেমন, প্যাকেজগুলিতে আপডেট ইনস্টল করার জন্য টিআর (এক্স)) অবিচ্ছিন্ন একাধিক সতর্কতা রয়েছে এবং কীভাবে এটি ডিবাগ করা যায় বা ঠিক করা যায় তা নিশ্চিত নই।

সতর্কবাণী "অজানা কলাম" স্পষ্টতই একটি টিবিএল_ডিএফের পরিবর্তিত পরিবর্তনের সাথে সম্পর্কিত যা আমি পুনরায় নামকরণ করেছি, তবে সতর্কতাটি সমস্ত ধরণের কমান্ডে আপাতদৃষ্টিতে tbl_df এর সাথে সম্পর্কিত নয় (যেমন, একটি প্যাকেজে আপডেট ইনস্টল করা হবে, str (x) যেখানে x কেবল একটি চরিত্রের ভেক্টর)।


11
আমি বুঝতে পারি যে প্রশ্নটি অস্পষ্ট, তবে সমস্যাটি মনে হচ্ছে। আমি এমনকি বাজে কথা টাইপ করতে পারি (যেমন, টাইপো) এবং সতর্কতা গ্রহণ করতে পারি। আমি অনুমান করছি এটি নিজেই আইডিই পরিবেশে স্থির থাকে, কোনওভাবে?
ssp3nc3r

1
আপনি সঠিক কমান্ড এবং আপনি যে আউটপুট পাবেন তা পোস্ট করতে পারেন?
কনভাস

3
হ্যাঁ, আরস্টুডিওর সর্বশেষতম সংস্করণ। আমি পরিবেশটি পরিষ্কার করেছি, পুনরায় চালু করেছি এবং যখন আমি টিবিএল_ডিএফ অবজেক্টে লোড করি তখন এটি ঘটতে শুরু করে। আমি মনে করি সমস্যাটিকে as.data.frame এ রূপান্তর করে, সবকিছু বন্ধ করে এবং ডেটা ফ্রেমটি আবার লোড করে সমস্যার সমাধান করেছি। এগিয়ে যাওয়া, আমি দুটি বিষয় বুঝতে চাই: টিবিএল_ডিএফ ব্যবহার করে কীভাবে সমস্যা এড়ানো যায় এবং কেন সতর্কতা পরিবেশে অবিচ্ছিন্ন বলে মনে হয়।
ssp3nc3r

1
আমি একই ভুল পাচ্ছি। FACEBOOK.1আপনার ডেটা.ফ্রেমগুলির কোনও একটি কলাম কি df$FACEBOOK.1আপনার আর স্ক্রিপ্টের কোথাও এটি কল করে ? আমার নম্র অনুমান যে tibblev1.1: blog.rstudio.org/2016/07/05/tibble-1-1- এ প্রবর্তিত প্যাকেজে এটি একটি ত্রুটি । আপনি কি tibbleস্পষ্টভাবে বোঝা করেছেন?
dpprdan

5
আমার সাথেও এটি ঘটছে। আমি একাধিক কম্পিউটারে প্যাটার্নটি পুনরুত্পাদন করতে পারি তবে সতর্কতাটি কিছু কমান্ডের পরে এলোমেলোভাবে প্রদর্শিত হয়, উদাহরণস্বরূপ লাইব্রেরি (এইচএমস্ক) বা dplyr দিয়ে একটি ডেটা ফ্রেম তৈরি করা। সতর্কতাগুলি এমন কলামগুলি উল্লেখ করে যা আমি এখনও তৈরি করি নি - আমি সেগুলি পরে আমার কোডে তৈরি করি। আমি একাধিকবার আর এবং স্টুডিয়ো পুনরায় চালু করেছি এবং কোড ক্লিন চালানো কোনও উপকারে আসেনি। এটা কি???
নোভা

উত্তর:


57

এটি আরটিস্টুডিওতে ডায়াগনস্টিক্স সরঞ্জামটির সাথে একটি সমস্যা (সেই সরঞ্জামটি যা আপনার কোডে সতর্কতা এবং সম্ভাব্য ভুল দেখায়)। এটা তোলে আংশিকভাবে সংশোধন করা হয়েছে এই সময়ে কমিট RStudio v1.1.103 মধ্যে বা পরে দ্বারা @ কেভিন-ushey । সমাধানটি আংশিক, কারণ সতর্কতাগুলি এখনও উপস্থিত রয়েছে (যদিও কম ফ্রিকোয়েন্সি সহ)। এই ইস্যুটি https://github.com/rstudio/rstudio/issues/7372 এ পুনরুত্পাদনযোগ্য উদাহরণ সহ রিপোর্ট করা হয়েছে এবং আরস্টুডিও ভি 1.4 পুল অনুরোধে স্থগিত করা হয়েছে (প্রকাশের জন্য)

বেশ কয়েকটি ওয়ার্কআরউন্ড উপলব্ধ রয়েছে, আপনি যে সমাধানটি পছন্দ করেন তা চয়ন করুন:

  • পছন্দ / কোড / ডায়াগনস্টিক্সে সমস্ত ফাইলের জন্য কোড ডায়াগনস্টিকগুলি অক্ষম করুন

  • একটি নির্দিষ্ট ফাইলের জন্য সমস্ত ডায়গনিস্টিকগুলি অক্ষম করুন:

    খোলা ফাইল (গুলি) এর শুরুতে যুক্ত করুন:

     # !diagnostics off

    তারপরে ফাইলগুলি সংরক্ষণ করুন এবং সতর্কতাগুলি উপস্থিত হওয়া বন্ধ করা উচিত।

  • সতর্কতার কারণ হিসাবে পরিবর্তনশীলগুলির জন্য ডায়াগনস্টিকগুলি অক্ষম করুন

    খোলা ফাইল (গুলি) এর শুরুতে যুক্ত করুন:

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

    তারপরে ফাইলগুলি সংরক্ষণ করুন এবং সতর্কতাগুলি উপস্থিত হওয়া বন্ধ করা উচিত।

সতর্কতা উপস্থিত রয়েছে কারণ আরস্টুডিওতে ডায়াগনস্টিক্স সরঞ্জাম ত্রুটিগুলি সনাক্ত করার জন্য উত্স কোডটিকে পার্স করে এবং যখন এটি ডায়াগোনস্টিক চেকগুলি সম্পাদন করে তখন এটি আপনার টিবলের কলামগুলিতে অ্যাক্সেস করে যা শুরু হয় না, সতর্কতাটি আমরা দেখছি। সতর্কতাগুলি উপস্থিত হয় না কারণ আপনি অসম্পৃক্ত জিনিসগুলি চালনা করেন, আরস্টুডিও ডায়াগোনস্টিকগুলি কার্যকর করা হলে (যখন কোনও ফাইল সংরক্ষণ করা হয়, তখন সংশোধন করা হয়, আপনি যখন কিছু চালাবেন ...) এগুলি উপস্থিত হয়।


13
ভাল কল. এটি আমার জন্য আরস্টুডিও ০.৯৯ এ কাজ করেছে, সরঞ্জামগুলি> গ্লোবাল বিকল্পগুলি> কোড> ডায়াগনস্টিকস
ক্রিস হলব্রুকের

8
আরস্টুডিও 1.1.383 আর 3.4.3 এর সাথে এখনও সমস্যা রয়েছে।
এমএস বেরেন্ডস

4
সংস্করণ 1.1.423 সহ এখনও সমস্যা রয়েছে। 'শো ডায়াগনস্টিকস' আনচেকিং দুর্দান্ত কাজ করে
অ্যাড্রিয়ান

2
এখনও v1.1.456 উপস্থিত রয়েছে। দীর্ঘশ্বাস.
ভূগোলিক

3
উবুন্টুতে আরস্টুডিও সার্ভারে আর v3.5.1 এর সাথে সিলটি আরস্টুডিও ভি 1.1.643 এর সাথে বিদ্যমান।
আরফেলবার

49

আমি একই সমস্যাটির মুখোমুখি হয়েছি এবং এটি কেন ঘটে তা আমি জানি না , এটি যখন ঘটে তখন আমি পিন করে নিতে সক্ষম হয়েছি এবং এভাবে ঘটতে বাধা দেয়।

ইস্যুটি একটি নতুন কলাম যুক্ত করার বিষয়টি বলে মনে হচ্ছে, সূচি থেকে উদ্ভূত, একটি বেবি আর ডেটা ফ্রেম বনাম একটি টিবল ডেটা ফ্রেমে। এই উদাহরণটি ধরুন, যেখানে আপনি ageএকটি বেস আর ডাটা ফ্রেমে একটি নতুন কলাম যুক্ত করবেন :

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অন্য টিডাইভার্স প্যাকেজগুলির (যেমন, টাইডার, ডিপি্লায়ার) ফাংশনগুলির সাথে একত্রে ব্যবহৃত হলে এই সতর্কতাটি উদীয়মান হতে পারে । প্যাকেজগুলির মতো সমালোচনামূলক স্যুটটির জন্য মূল্য দিতে ছোট দাম, তবে তবুও অদ্ভুত / বিরক্তিকর।
সাবার

NAএর ভেক্টর তৈরি করা আমার পক্ষে কাজ করেছে! (আরস্টুডিও সংস্করণ 1.1.456, আর সংস্করণ 3.5.1)
পেটিজি

কখনও কখনও আমি কলামের ধরণ যেমন, আর তারিখগুলি উল্লেখ করতে চাই এবং যদি আমি পূরণ করি তবে NAপরে পূরণ করা তারিখগুলি সংখ্যার প্রকারে রূপান্তরিত হবে।
জিগাং

1
@ জিয়াগাং ক্লাস দিয়ে as.Date(NA_character_)দেয় । NADate
স্টিবু

টিবলগুলি ডিজাইন করে ডেটা.ফ্রেমগুলির চেয়ে আরও সীমাবদ্ধ। এটি নকশার দ্বারা হতে পারে, আপনার কোনও কলামটি কেবলমাত্র অংশটি দিয়ে শুরু করার কথা নয়। যাইহোক, এটি যদি কোনও প্রতিরক্ষামূলক বৈশিষ্ট্য এবং কোনও ডিজাইনের ত্রুটি না হয় তবে তারপরে টেবিলে অ্যাসাইনমেন্টের প্রথম দিকের এককালীন ত্রুটি অনেক বেশি পছন্দনীয় হবে।
নিন্দা

17

"Dplyr" প্যাকেজটি ব্যবহার করার সময় আমি এই সমস্যার মুখোমুখি হয়েছি।
"Dplyr" লাইব্রেরিতে "group_by" ফাংশনটি ব্যবহার করার পরে যারা এই সমস্যায় পড়ছেন তাদের জন্য:

আমি খুঁজে পেয়েছি যে ভেরিয়েবলগুলিকে অকার্যুপ করা অজানা কলাম সতর্কতা সমস্যা সমাধান করে। সমস্যাটি সমাধান না হওয়া পর্যন্ত মাঝে মাঝে আমাকে কয়েকবার দলবদ্ধ না হয়ে পুনরাবৃত্তি করতে হয়েছিল।


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"

@ অ্যাডস থেকে আংশিক স্ক্রিপ্ট ধার করা হয়েছে


ইহা যাদুর মত কাজ করে. আমি ভাবছিলাম যে এটি কোনও ডেটা ফ্রেমে রূপান্তরিত করার এবং তারপরে এটিকে টিবিলে রূপান্তরিত করার কোনও খারাপ দিক রয়েছে। এটি কি হেরে গেল কেবল সতর্কতা?
p130ter

1
আমার জন্য আর স্টুডিও 2.1.442 এখনও কাজ করছে নাWarning message: Unknown or uninitialised column: 'bad_column'
andemexoax

3

একসাথে টিবল এবং ল্যাপ্লি ফাংশনগুলি নিয়ে কাজ করার সময় আমার এই সমস্যা হয়েছিল। টিবলটি ডেটাফ্রেমের অভ্যন্তরে একটি জিনিস হিসাবে জিনিসগুলি সংরক্ষণ করে to

টিবিলে একটি ল্যাপ্লি ফাংশনের ফলাফল যুক্ত করার আগে আমি তালিকাভুক্ত না করে এটি সমাধান করেছি।


1

ডাইপ্লায়ার ব্লক ব্যবহার করে তৈরি একটি টিবিলিটি বাদে আমিও এই সমস্যায় পড়েছি। আমি কীভাবে একই ত্রুটিতে এসেছি তা দেখানোর জন্য এখানে সাব্রের কোডের সামান্য পরিবর্তন করা হয়েছে।

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")
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.