আর-তে "=" এবং "<-" এসাইনমেন্ট অপারেটরগুলির মধ্যে পার্থক্য কী?


712

এসাইনমেন্ট অপারেটর =এবং <-আর এর মধ্যে পার্থক্য কী ?

আমি জানি যে অপারেটরগুলি কিছুটা আলাদা, উদাহরণ হিসাবে দেখা যায়

x <- y <- 5
x = y = 5
x = y <- 5
x <- y = 5
# Error in (x <- y) = 5 : could not find function "<-<-"

তবে এটাই কি একমাত্র পার্থক্য?


45
এখানে উল্লিখিত হিসাবে <-প্রতীকটির উত্সগুলি পুরানো এপিএল কীবোর্ড থেকে আসে যা আসলে তাদের একক <-কী ছিল ।
joran

উত্তর:


95

এসাইনমেন্ট অপারেটর =এবং <-আর এর মধ্যে পার্থক্য কী ?

যেমন আপনার উদাহরণটি দেখায়, =এবং <-কিছুটা অপারেটর প্রাধান্য রয়েছে (যা তারা যখন একই অভিব্যক্তিতে মিশ্রিত হয় তখন মূল্যায়নের ক্রম নির্ধারণ করে)। আসলে, ?Syntaxআর এ নিম্নলিখিত অপারেটরকে অগ্রাধিকার সারণী দেয়, সর্বোচ্চ থেকে নীচে পর্যন্ত:

-> ->>’           rightwards assignment<- <<-’           assignment (right to left)=’                assignment (right to left)

তবে এটাই কি একমাত্র পার্থক্য?

যেহেতু আপনি অ্যাসাইনমেন্ট অপারেটরগুলি সম্পর্কে জিজ্ঞাসা করেছিলেন : হ্যাঁ, এটিই কেবলমাত্র পার্থক্য। তবে অন্যথায় বিশ্বাস করার জন্য আপনাকে ক্ষমা করা হবে। এমনকি ?assignOpsদাবিগুলির আর ডকুমেন্টেশন আরও বেশি পার্থক্য রয়েছে:

অপারেটরটি <-যে কোনও জায়গায় ব্যবহার করা যেতে পারে, তবে অপারেটরটিকে =কেবলমাত্র শীর্ষ স্তরে (যেমন, কমান্ড প্রম্পটে টাইপ করা সম্পূর্ণ এক্সপ্রেশনটিতে) বা এক্সপ্রেশনগুলির একটি ব্রেসড তালিকার একটি সফল এক্সপ্রেশন হিসাবে অনুমোদিত।

আসুন এটির উপরে খুব একটা সূক্ষ্ম বিন্দু রাখি না: আর ডকুমেন্টেশন ভুল (সূক্ষ্মভাবে) ভুল [ 1 ] । এটি দেখানো সহজ: আমাদের কেবল =অপারেটরের একটি পাল্টা উদাহরণ খুঁজে বের করতে হবে যা শীর্ষ স্তরে (ক) নয়, (খ) এক্সপ্রেশনগুলির একটি বন্ধনীযুক্ত তালিকায় একটি সফল এক্সপ্রেশন (অর্থাত {…; …})। - আরও ঝামেলা ছাড়া:

x
# Error: object 'x' not found
sum((x = 1), 2)
# [1] 3
x
# [1] 1

স্পষ্টতই আমরা প্রাসঙ্গিক =(ক) এবং (খ) এর বাইরে ব্যবহার করে একটি কার্য সম্পাদন করেছি । সুতরাং, কয়েক দশক ধরে কেন একটি মূল আর ভাষার বৈশিষ্ট্যটির ডকুমেন্টেশন ভুল হয়েছে?

কারণ আর এর বাক্য গঠনতে প্রতীকটির =দুটি স্বতন্ত্র অর্থ রয়েছে যা নিয়মিত সঙ্কোচিত হয়:

  1. প্রথম অর্থ একটি অ্যাসাইনমেন্ট অপারেটর হিসাবে । আমরা এতক্ষণ এই বিষয়ে কথা বললাম।
  2. দ্বিতীয় অর্থটি অপারেটর নয় বরং সিনট্যাক্স টোকেন যা কোনও ফাংশন কলে পাস করার সংকেত নামের আভাস দেয় । =অপারেটরের বিপরীতে এটি রানটাইমের সময় কোনও পদক্ষেপ নেয় না, এটি কেবল একটি এক্সপ্রেশনকে বিশ্লেষণ করার পদ্ধতি পরিবর্তন করে।

দেখা যাক.

সাধারণ ফর্মের যে কোনও কোডের অংশে ...

‹function_name›(‹argname› = ‹value›,)
‹function_name›(‹args›, ‹argname› = ‹value›,)

... =করছে: টোকেন যে সংজ্ঞায়িত নামে যুক্তি ক্ষণস্থায়ী হয় না অ্যাসাইনমেন্ট অপারেটর। তদতিরিক্ত, কিছু সিন্ট্যাক্টিকিক প্রসঙ্গে =সম্পূর্ণ নিষিদ্ধ :

if (‹var› = ‹value›) …
while (‹var› = ‹value›) …
for (‹var› = ‹value› in ‹value2›) …
for (‹var1› in ‹var2› = ‹value›) …

এর মধ্যে যে কোনও একটি ত্রুটি উত্থাপন করবে "অপ্রত্যাশিত '=' ›bla› 'তে।

অন্য কোনও প্রসঙ্গে =অ্যাসাইনমেন্ট অপারেটর কলকে বোঝায়। বিশেষত, সবেমাত্র এক্সপ্রেসনের চারপাশে কেবল প্রথম বন্ধনী স্থাপন করা উপরের যে কোনওটিকে (ক) বৈধ এবং (খ) একটি কার্যনির্বাহী করে তোলে । উদাহরণস্বরূপ, নিম্নলিখিত কার্য সম্পাদন করে:

median((x = 1 : 10))

তবে এছাড়াও:

if (! (nf = length(from))) return()

এখন আপনি আপত্তি করতে পারেন যে এই জাতীয় কোডটি নৃশংস (এবং আপনি ঠিক থাকতে পারেন)। কিন্তু আমি থেকে এই কোড গ্রহণ base::file.copyফাংশন (প্রতিস্থাপন <-সঙ্গে =) - এটা কোর আর কোডবেস অনেক একটি পরিব্যাপক প্যাটার্ন আছে।

জন চেম্বার দ্বারা মূল ব্যাখ্যা , যা আর ডকুমেন্টেশন সম্ভবত উপর ভিত্তি করে তৈরি, আসলে সঠিকভাবে এই ব্যাখ্যা করে:

=ব্যাকরণে কেবলমাত্র দুটি জায়গায় [ অ্যাসাইনমেন্টের অনুমতি রয়েছে] শীর্ষ স্তরে (সম্পূর্ণ প্রোগ্রাম বা ব্যবহারকারী-টাইপযুক্ত অভিব্যক্তি হিসাবে); এবং আশেপাশের যৌক্তিক কাঠামো থেকে যখন পৃথক করা হয় তখন বন্ধনীগুলি বা একটি অতিরিক্ত জুটি বন্ধনী।


একটি স্বীকারোক্তি: আমি আগে মিথ্যা বলেছি। সেখানে হয় মধ্যে একটি অতিরিক্ত পার্থক্য =এবং <-অপারেটরদের তারা স্বতন্ত্র ফাংশন কল। ডিফল্টরূপে এই ফাংশনগুলি একই কাজ করে তবে আচরণ পরিবর্তন করতে আপনি এগুলির দুটি পৃথক করে ওভাররাইড করতে পারেন। বিপরীতে, <-এবং ->(বাম থেকে ডান অ্যাসাইনমেন্ট), সিন্টেক্সিকভাবে পৃথক হলেও সর্বদা একই ফাংশনটিকে কল করে । একজনকে ওভাররাইড করা অন্যটিকে ওভাররাইড করে। এটি জানা খুব কমই ব্যবহারিক তবে এটি মজাদার শেননিগানদের জন্য ব্যবহার করা যেতে পারে


1
আর এর ডকটিতে ?তাত্পর্য এবং ত্রুটি সম্পর্কে, এর নজিরটি আসলে মধ্যে সঠিকভাবে হয় =এবং এর <-ওভাররাইড করার সময় গুরুত্বপূর্ণ পরিণতি হয় ? এবং অন্যথায় কার্যত কোনও কিছুই হয় না।
মুডি_ মুডস্কিপার

@ মুডি_ মুডস্কিপারটি যে উদ্ভট! আপনি ঠিক হবে বলে মনে হচ্ছে, কিন্তু অনুযায়ী সোর্স কোড ( main/gram.y), এর প্রাধান্য ?সঠিকভাবে নথিভুক্ত, এবং উভয় চেয়ে কম হয় =এবং <-
কনরাড রুডলফ

আমি সি কথা বলি না তবে আমি মনে করি =পার্স গাছ তৈরি হওয়ার আগে একটি বিশেষ চিকিত্সা পেয়েছি । ফাংশন যুক্তিগুলির সাথে সম্পর্কিত হতে পারে, এটি বোঝা যায় যে foo(x = a ? b)আমরা =বাকী বাক্যটিকে বিশ্লেষণ করার আগে সন্ধান করব ।
মুডি_ মুডস্কিপার

@ মুডি_ মুডসকিপার আমি আর-
কনরাড রুডল্ফ

2
@ মুডি_মদস্কিপার এফডাব্লুআইডাব্লু এটি অবশেষে ৪.০.০ এ স্থির করা হয়েছে।
কনরাড রুডল্ফ

661

অ্যাসাইনমেন্ট অপারেটরগুলির পার্থক্য স্পষ্ট হয় যখন আপনি কোনও ফাংশন কলে একটি আর্গুমেন্ট মান সেট করতে তাদের ব্যবহার করেন। উদাহরণ স্বরূপ:

median(x = 1:10)
x   
## Error: object 'x' not found

এই ক্ষেত্রে, xফাংশনের ক্ষেত্রের মধ্যে ঘোষণা করা হয়, তাই এটি ব্যবহারকারী কর্মক্ষেত্রে উপস্থিত নেই।

median(x <- 1:10)
x    
## [1]  1  2  3  4  5  6  7  8  9 10

এই ক্ষেত্রে, xব্যবহারকারী কর্মক্ষেত্রে ঘোষিত হয়, তাই আপনি ফাংশন কলটি শেষ হওয়ার পরে এটি ব্যবহার করতে পারেন।


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

x<-3
# Does this mean assignment?
x <- 3
# Or less than?
x < -3

বেশিরভাগ আর আইডিইতে <-টাইপ করা সহজ করার জন্য কীবোর্ড শর্টকাট রয়েছে । Ctrl+ =আর্কিটেক্টে, Alt+ -আরস্টুডিওতে ( Option+ -ম্যাকোসের অধীনে), Shift+ -(আন্ডারস্কোর) ইমাসে + ইএসএসে।


আপনি লেখার চান =করতে <-কিন্তু প্রকাশ্যে মুক্তি কোড বেশি প্রচলিত নিয়োগ প্রতীক (উদাহরণস্বরূপ, Cran দিকে) ব্যবহার করতে চান, তাহলে আপনি একটি ব্যবহার করতে পারেন tidy_*ইন ফাংশান উপস্থিত formatRপ্যাকেজ স্বয়ংক্রিয়ভাবে প্রতিস্থাপন =সঙ্গে <-

library(formatR)
tidy_source(text = "x=1:5", arrow = TRUE)
## x <- 1:5

"কেন x <- y = 5ত্রুটি ছুঁড়েছে তবে তা নয় x <- y <- 5?" এই প্রশ্নের উত্তর "এটি পার্সারে থাকা যাদুতে নেমে এসেছে"। আর এর সিনট্যাক্সে অনেকগুলি অস্পষ্ট মামলা রয়েছে যা একরকম বা অন্য কোনওভাবে সমাধান করতে হবে। পার্সার বিভিন্ন অর্ডারে এক্সপ্রেশনটির বিটগুলি সমাধান করার জন্য =বা <-ব্যবহৃত হয়েছে কিনা তার উপর নির্ভর করে চয়ন করে ।

কী হচ্ছে তা বোঝার জন্য আপনাকে জানতে হবে যে নিয়োগটি নিঃশব্দে নির্ধারিত মানটি ফিরিয়ে দেয়। আপনি আরও স্পষ্টভাবে মুদ্রণ করে দেখতে পারেন উদাহরণস্বরূপ print(x <- 2 + 3)

দ্বিতীয়ত, যদি আমরা অ্যাসাইনমেন্টের জন্য উপসর্গ স্বরলিপি ব্যবহার করি তবে এটি স্পষ্ট। সুতরাং

x <- 5
`<-`(x, 5)  #same thing

y = 5
`=`(y, 5)   #also the same thing

পার্সার x <- y <- 5হিসাবে ব্যাখ্যা করে

`<-`(x, `<-`(y, 5))

আমরা আশা করি x <- y = 5তখন হতে পারে

`<-`(x, `=`(y, 5))

কিন্তু আসলে এটি হিসাবে ব্যাখ্যা করা হয়

`=`(`<-`(x, y), 5)

এটি হ'ল সহায়তার পৃষ্ঠায় দেখানো =চেয়ে কম অগ্রাধিকারের কারণ ।<-?Syntax


4
এটি প্যাট্রিক বার্নসের দ্য আর ইনফার্নোর ৮.২.২6 অধ্যায়েও উল্লেখ করা হয়েছে (যাইহোক আমি নয় তবে একটি প্রস্তাবনা)
উউউ

3
তবে, median((x = 1:10))একই প্রভাব আছে median(x <- 1:10)
ফ্রান্সেসকো নপোলিটানো

2
আমি তাদের শর্টকাটগুলি সত্যিই বিবেচনা করি না, যে কোনও ক্ষেত্রে আপনি একই সংখ্যক কী টিপুন
yosemite_k

5
আমি কেবল বুঝতে পেরেছি যে কীভাবে ব্যাখ্যা করা যায় তার আপনার ব্যাখ্যাটি x <- x = 5কিছুটা ভুল: বাস্তবে, আর এটিকে ব্যাখ্যা করে ​`<-<-`(x, y = 5, value = 5)(যা নিজেই কম বেশি বা এর সমতুল্য tmp <- x; x <- `<-<-`(tmp, y = 5, value = 5))। বাবা!
কনরাড রুডলফ

4
… এবং আমি ঠিক বুঝতে পেরেছি যে এই উত্তরের প্রথম অংশটি ভুল এবং দুর্ভাগ্যক্রমে, বেশ বিভ্রান্তিকর কারণ এটি একটি সাধারণ ভুল ধারণাটি স্থায়ী করে: =ফাংশন কলে আপনি যেভাবে ব্যবহার করেন তা কার্য সম্পাদন করে না এবং কোনও এসাইনমেন্ট অপারেটর নয়। এটি সম্পূর্ণ আলাদা পার্স করা আর এক্সপ্রেশন, যা একই চরিত্রটি ব্যবহার করার জন্য ঘটে। তদ্ব্যতীত, আপনার প্রদর্শিত কোডটি xফাংশনের সুযোগে "ঘোষণা" করে না । ফাংশন ঘোষণা সঞ্চালিত ঘোষণা ড। ফাংশন কল দেয় না (নামযুক্ত ...যুক্তি দিয়ে এটি কিছুটা জটিল হয়ে যায় )।
কনরাড রুডল্ফ

103

গুগলের আর স্টাইল গাইড অ্যাসাইনমেন্টের জন্য "=" নিষেধ করে বিষয়টি সরল করে। খারাপ পছন্দ নয়।

https://google.github.io/styleguide/Rguide.xml

আর ম্যানুয়াল সমস্ত 5 এসাইনমেন্ট অপারেটরগুলির উপর সুন্দর বিশদে যায়।

http://stat.ethz.ch/R-manual/R-patched/library/base/html/assignOps.html


133
দুর্ঘটনাজনিত কার্যভারের নেতিবাচক দিকটি x<-yযখন x < -yবোঝানো হয়েছিল তখন আমাকে এতটা ঘৃণা করে যে আমি ব্যক্তিগতভাবে পছন্দ করি =। আপনার কোডটি হোয়াইটস্পেসের উপস্থিতির উপর নির্ভর করে আমার কাছে ভাল লাগবে না। শৈলীর পরামর্শ হিসাবে ব্যবধানের পরামর্শ দেওয়া ঠিক আছে তবে আপনার কোডটি আলাদাভাবে চালানোর জন্য কোনও স্থান আছে কিনা? আপনি যদি নিজের কোডটি পুনরায় ফর্ম্যাট করেন, বা অনুসন্ধান এবং প্রতিস্থাপন ব্যবহার করেন তবে হোয়াইটস্পেস কখনও কখনও অদৃশ্য হয়ে যেতে পারে এবং কোডটি খারাপ হয়ে যায়। এটি কোনও সমস্যা নয় =। আইআইইউসি, =" <- " প্রয়োজনের সমান নিষিদ্ধ করে ; অর্থাত্ " <-" নয়, একটি স্থান সহ 3 টি অক্ষর ।
ম্যাট ডাওল

12
লক্ষ্য করুন কোনো অ-0 বিবেচনা করা হয় TRUEআর তাই দ্বারা যদি আপনি পরীক্ষা করতে মনস্থ যদি xকম -y, আপনি লিখে রাখতে পারি if (x<-y)যা সতর্ক করবে না বা ত্রুটি, এবং কাজের জরিমানা প্রদর্শিত হবে। এটি কেবল FALSEতখনই হবে y=0, যদিও।
ম্যাট ডাওল

4
আপনি যদি নিষিদ্ধ =এবং ব্যবহার করেন <- তবে তর্ক করা কঠিন যে অতিরিক্ত ধাপের grep "[^<]<-[^ ]" *.Rপ্রয়োজন নেই। =এরকম দরকার নেই grep
ম্যাট ডাওল

34
<-আপনি যদি ব্যবহার করতে পারেন তবে আপনার চোখ এবং আঙুলকে কেন আঘাত করবেন =? 99.99% বার সময় =ঠিক আছে। কখনও কখনও আপনার প্রয়োজন হয় <<-, যা একটি ভিন্ন ইতিহাস।
ফার্নান্দো

10
<- এ ফোকাস হ'ল + = এবং - = এর অভাবের জন্য এক পঙ্গু কারণ।
ক্রিস

37

x = y = 5সমান x = (y = 5), কারণ অ্যাসাইনমেন্ট অপারেটরগুলি "গোষ্ঠী" ডান থেকে বামে কাজ করে যা কাজ করে। অর্থ: 5 নির্ধারণ, 5 yনম্বর ছেড়ে; এবং তারপরে 5 এ নিয়োগ করুন x

এটি যেমন হয় না (x = y) = 5, যা কাজ করে না! অর্থ: এর মান নির্ধারণ yকরতে x, মান রেখে y; এবং তারপরে 5 টি, উম্মম ..., ঠিক কী অর্পণ করবেন?

আপনি যখন বিভিন্ন ধরণের এসাইনমেন্ট অপারেটরগুলি মিশ্রণ করেন, তখন তার <-চেয়ে বেশি শক্ত করে বাঁধেন =। সুতরাং x = y <- 5হিসাবে ব্যাখ্যা করা হয় x = (y <- 5), যা কেসটি বোঝায় makes

দুর্ভাগ্যক্রমে, x <- y = 5ব্যাখ্যা করা হয় (x <- y) = 5, যা কাজ করে না!

অগ্রাধিকার (বাঁধাই করা) এবং দলবদ্ধকরণের নিয়মগুলি দেখুন ?Syntaxএবং দেখুন ?assignOps


হ্যাঁ, কনরাড রুডল্ফের উত্তর যেমনটি বলা হয়েছে অগ্রাধিকারের সারণীতে <- <<-উপরে রয়েছে =, যার অর্থ <-প্রথমে সন্ধান করা হবে। সুতরাং, x <- y = 5হিসাবে কার্যকর করা উচিত (x <- y) = 5
নিক দং

1
@ নিক দং হ্যাঁ। সহায়কভাবে, অপারেটর precedendence টেবিলে unambiguously নথিভুক্ত করা ? সিনট্যাক্স {বেস}
স্টিভ পিচারস

33

জন চেম্বার্সের মতে, অপারেটরটিকে =কেবলমাত্র "শীর্ষ স্তরে" অনুমতি দেওয়া হয় যার অর্থ ifনিম্নলিখিত প্রোগ্রামিং ত্রুটিটিকে অবৈধ করে এমন নিয়ন্ত্রণ কাঠামোগুলিতে এটি অনুমোদিত নয় ।

> if(x = 0) 1 else x
Error: syntax error

যেমনটি তিনি লিখেছেন, "নিয়ন্ত্রণের এক্সপ্রেশনগুলিতে নতুন অ্যাসাইনমেন্ট ফর্মটি [=] অস্বীকার করা প্রোগ্রামিং ত্রুটিগুলি এড়িয়ে যায় (যেমন উপরের উদাহরণ হিসাবে) যা অন্যান্য এস অ্যাসাইনমেন্টের চেয়ে সমান অপারেটরের সাথে বেশি সম্ভাবনা রয়েছে।"

আপনি যদি এটিটিকে "পার্শ্ববর্তী লজিকাল কাঠামো থেকে ব্রেস বা একটি অতিরিক্ত জোড়া বন্ধনী দ্বারা পৃথক করা" থেকে if ((x = 0)) 1 else xকাজ করতে পারেন তবে এটি কাজ করতে পারে।

Http://developer.r-project.org/equalAssign.html দেখুন


11
এটি একটি সাধারণ বাগ, x==0প্রায় সবসময় পরিবর্তে বোঝানো হয়।
অ্যারন

14
আহ, হ্যাঁ, আমি উপেক্ষা করেছি যে আপনি "প্রোগ্রামিং ত্রুটি" বলেছেন। এটি আসলে একটি সুসংবাদ যা এর ফলে একটি ত্রুটি ঘটায়। এবং x=0অ্যাসাইনমেন্ট হিসাবে অগ্রাধিকার হিসাবে ভাল কারণ x<-0!
স্টিভ পিচারস

7
হ্যাঁ, এটি দুর্দান্ত যে এটির ফলে একটি ত্রুটি ঘটেছে, যদিও আমি কী পছন্দ করব সে সম্পর্কে আমি আলাদা পাঠ আঁকিয়েছি; আমি ব্যবহার করার জন্য চয়ন =সম্ভব কারণ হিসাবে সামান্য হিসাবে =এবং ==বর্ণন অনুরূপ তাই।
অ্যারন

2
এই উদাহরণটি যেভাবে উপস্থাপন করা হয়েছে তা আমার কাছে খুব অদ্ভুত। if(x = 0) 1 else xএকটি ত্রুটি নিক্ষেপ করে, আমাকে একটি বাগ খুঁজে পেতে এবং সংশোধন করতে সহায়তা করে। if(x <- 1) 1 else xএকটি ত্রুটি ফেলে না এবং খুব বিভ্রান্তিকর হয়।
গ্রেগর টমাস 21

3
আমার অর্থ, সত্যই সহায়ক ত্রুটি পরীক্ষক সেখানে ত্রুটি ছুঁড়ে মারবে এবং বলবে "আপনার কাছে অকেজো কোড রয়েছে যা সর্বদা elseমানটি ফিরিয়ে দেবে , আপনি কি সেভাবে এটি লেখার অর্থ দিয়েছিলেন?", তবে, এটি পাইপের স্বপ্ন হতে পারে ...
টাইলার

26

অপারেটর <-এবং =পরিবেশ নির্ধারণ করা হয় যেখানে তারা মূল্যায়ন করা হয়। অপারেটরটি <-যে কোনও জায়গায় ব্যবহার করা যেতে পারে, তবে অপারেটরটিকে =কেবলমাত্র শীর্ষ স্তরের (যেমন, কমান্ড প্রম্পটে টাইপ করা সম্পূর্ণ এক্সপ্রেশনটিতে) বা এক্সপ্রেশনগুলির একটি ব্রেসড তালিকার একটি সফল এক্সপ্রেশন হিসাবে অনুমোদিত।


8
আমি মনে করি "শীর্ষ স্তর" এর অর্থ বিবৃতি স্তরের চেয়ে অভিব্যক্তি স্তরের চেয়ে। সুতরাং x <- 42নিজস্বভাবে একটি বিবৃতি; মধ্যে if (x <- 42) {}এটি একটি অভিব্যক্তি হবে এবং বৈধ নয়। স্পষ্টতই, আপনি বৈশ্বিক পরিবেশে রয়েছেন বা না থাকায় এটির কোনও সম্পর্ক নেই।
স্টিভ পিচারস

1
এটি: "অপারেটর = কেবলমাত্র শীর্ষ স্তরে অনুমোদিত" এক বিস্তৃত অনুষ্ঠিত ভুল বোঝাবুঝি এবং সম্পূর্ণ ভুল।
কনরাড রুডল্ফ

এটি সত্য নয় - উদাহরণস্বরূপ, এটি কাজ করে, যদিও অ্যাসাইনমেন্টটি সম্পূর্ণ প্রকাশ নয়:1 + (x = 2)
পাভেল মিনায়েভ

1
কনরাড রুডল্ফ এবং পাভেলমিনায়েভের মন্তব্যগুলি স্পষ্ট করার জন্য, আমি বলেছি এটি সম্পূর্ণরূপে ভুল বলা খুব শক্তিশালী বলে মনে করি, তবে একটি ব্যতিক্রম রয়েছে, যখন এটি "ব্রেসগুলি বা একটি অতিরিক্ত জোড়া বন্ধনী দ্বারা" পার্শ্ববর্তী লজিকাল কাঠামো থেকে বিচ্ছিন্ন হয়ে যায়। "
অ্যারন

অথবা function() x = 1, repeat x = 1, if (TRUE) x = 1....
Moody_Mudskipper

6

এটি সেই দুটি অপারেটরের মধ্যে পার্থক্য বোঝার ক্ষেত্রেও যুক্ত হতে পারে:

df <- data.frame(
      a = rnorm(10),
      b <- rnorm(10)
)

প্রথম উপাদানটির জন্য আর মান এবং যথাযথ নাম নির্ধারিত করেছে, যখন দ্বিতীয় উপাদানটির নামটি কিছুটা অদ্ভুত দেখাচ্ছে।

str(df)
# 'data.frame': 10 obs. of  2 variables:
#  $ a             : num  0.6393 1.125 -1.2514 0.0729 -1.3292 ...
#  $ b....rnorm.10.: num  0.2485 0.0391 -1.6532 -0.3366 1.1951 ...

আর সংস্করণ 3.3.2 (2016-10-31); ম্যাকস সিয়েরা 10.12.1


6
এখানে কেন ঘটছে / এখানে কী চলছে তার আরও বিস্তারিত ব্যাখ্যা আপনি দিতে পারেন? (ইঙ্গিত: data.frameডেটা ফ্রেমে উপাদানটির নাম হিসাবে প্রদত্ত ভেরিয়েবলের নাম ব্যবহার করার চেষ্টা করে)
বেন বলকার

শুধু ভেবেছি, এটি সম্ভবত কোনও বাগ হতে পারে? এবং যদি তা হয় তবে আমি কীভাবে এবং কোথায় এটি রিপোর্ট করব?
ডেনিস রসুলেভ

7
এটি কোনও বাগ নয়। আমি আমার মন্তব্যে উত্তরটি ইঙ্গিত করার চেষ্টা করেছি। উপাদানটির নাম নির্ধারণ করার সময়, আর এর সমতুল্য ব্যবহার করবে make.names("b <- rnorm(10)")
বেন বলকার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.