আর-তে 'মন্তব্য' ফাংশনের ভাল ব্যবহার কী?


35

আমি commentআর-তে ফাংশনটি আবিষ্কার করেছি Example উদাহরণ:

x <- matrix(1:12, 3,4)
comment(x) <- c("This is my very important data from experiment #0234",
                "Jun 5, 1998")
x
comment(x)

এই প্রথম আমি এই ফাংশনটি নিয়ে এসে ভাবছিলাম যে এর সাধারণ / দরকারী ব্যবহারগুলি কী। যেহেতু গুগলে "আর মন্তব্য" অনুসন্ধান করা এবং প্রাসঙ্গিক ফলাফলগুলি খুঁজে পাওয়া বেশ কঠিন, তাই আমি আশা করছিলাম যে এখানে কেউ তার অভিজ্ঞতার সাথে ভাগ করে নিতে পারে।


3
আমি মনে করি না যে এই প্রশ্নটির সত্যই সিডব্লিউ হওয়া উচিত। এটি সীমান্তরেখা, তবে এটি খুব খারাপ নয়।
csgillespie

দুর্দান্ত তথ্য! (টাইম সিরিজ প্যাকেজ 'এক্সটিএস'-তে এই মেটাডেটা কার্যকারিতা রয়েছে))
ডগ

2
এই প্রশ্নটি বন্ধ করার জন্য পরামর্শ দেওয়া হয়েছে: যদি প্রশ্নটি বিস্তৃতভাবে সংশ্লেষ করা হয় (এবং লক্ষ্য করুন যে উত্তরগুলির মধ্যে কোনওটিই আর-নির্দিষ্ট নয়) তবে এটি কখন এবং কেন ডেটা কলামগুলি লেবেল করতে চাইবে এ সম্পর্কে একটি প্রশ্ন। এই জাতীয় ডেটা ম্যানেজমেন্ট ইস্যুটি পরিসংখ্যান অনুশীলনের একটি নিয়মিত অংশ, সুতরাং এখানে তর্কসাপেক্ষ বিষয় is
সিলভারফিশ 20'16

উত্তর:


15

গ্যাভিনের দ্বিতীয় স্থানে, ফ্রাঙ্ক হ্যারেল তার এইচএমস্ক প্যাকেজে আর-তে এনটোটেড ডেটা.ফ্রেম হ্যান্ডেল করার জন্য কার্যকর উপায়গুলি তৈরি করেছে । উদাহরণস্বরূপ, label()এবং units()ফাংশনগুলি আর অবজেক্টগুলিতে ডেডিকেটেড বৈশিষ্ট্যগুলি যুক্ত করতে দেয়। ডেটা.ফ্রেমের সংক্ষিপ্তসার তৈরি করার সময় আমি তাদের খুব সহজ মনে করি (উদাহরণস্বরূপ, সহ describe())।

এই জাতীয় অতিরিক্ত বৈশিষ্ট্য ব্যবহারের আর একটি কার্যকর উপায় হ'ল ডেটা সেটে টাইমস্ট্যাম্প প্রয়োগ করা। আমি এলোমেলো বীজ, ভাঁজ সংখ্যা (যখন আমি কে-কোল্ড বা এলওইউ ক্রস-বৈধকরণ ব্যবহার করি) এর মতো জিনিসের জন্য একটি বৈশিষ্ট্যও যুক্ত করি।


14

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

comment()ভবিষ্যতের রেফারেন্সের জন্য এই তথ্যটি ডেটা ফ্রেমে সংযুক্ত করার একটি দুর্দান্ত উপায় হিসাবে আমি দেখতে পাচ্ছি ।


2
স্ট্যান্ডার্ড সলিউশনটি হল পরিমাপের ইউনিটগুলির জন্য একটি ক্ষেত্র অন্তর্ভুক্ত করা, যাতে সমস্ত সংখ্যার ফলাফলকে সাধারণ (পরামিতি-নির্দিষ্ট) ইউনিটে রূপান্তর করতে কম্পিউটার প্রোগ্রাম করা যায়। এই গুরুত্বপূর্ণ তথ্যকে মন্তব্যে সমাহিত করা এই ক্ষমতা প্রয়োগ করা কঠিন বা অসম্ভব করে তোলে।
whuber

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

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

4
আমীন! comment()এট হুক নোট এবং তথ্যের জন্য কার্যকর, তবে বৃহত্তর স্কেল ডেটা হ্যান্ডলিংয়ের জন্য একটি উপযুক্ত সিস্টেমের প্রয়োজন। মজার বিষয় হল আমাদের গবেষণামূলক গোষ্ঠী এবং পরামর্শের মধ্যে আমরা আমাদের কেমিস্ট্রি ডেটা সম্পর্কিত এবং এটির জন্য একটি সঠিক ডাটাবেসে প্রবেশ করার প্রয়োজনে পরামর্শ করি address
মনিকা পুনরায় ইনস্টল করুন - জি সিম্পসন

8

অন্যান্য প্যাকেজগুলিতে অনুরূপ সুবিধাগুলি বিদ্যমান, যেমন স্টাটা-নোটস-কমান্ড । আমরা ভেরিয়েবলের সম্পূর্ণ বিবরণ ডকুমেন্ট করতে এটি ব্যবহার করি , উদাহরণস্বরূপ একটি জৈব রাসায়নিক পরিমাপের জন্য খরের বিশদ বিবরণ, বা প্রশ্নাবলীর ডেটার জন্য জিজ্ঞাসা করা প্রশ্নের সঠিক শব্দবন্ধ। পরিবর্তনশীল নাম বা লেবেলের জন্য এটি প্রায়শই অত্যধিক তথ্য, যা উভয়ই পরিবর্তনশীল জড়িত প্রতিটি বিশ্লেষণের আউটপুটে প্রদর্শিত হয় এবং তাই যথাযথভাবে সংক্ষিপ্ত রাখা হয়।


4

আমি নিজেকে যে জিনিসগুলি অনেক কিছু করতে দেখছি তার মধ্যে একটি হ'ল ডেটা এবং অবজেক্ট উত্পন্ন করার জন্য ব্যবহৃত কমান্ডগুলি ট্র্যাক করা এবং মন্তব্যটিকে এটির জন্য একটি কার্যকর সরঞ্জাম হিসাবে খুঁজে পেয়েছে।

'ম্যাচডাকল.এল.ডাটা' এবং 'জেনারেট ডটকম' স্ট্যান্ডিং 'কৌশলটি করে। নিখুঁত নয়, তবে সহায়ক এবং 'মন্তব্য ()' এর জন্য ব্যবহার। :)

# Comments only accept strings...
# Substituting the escaped quotes ('\"') makes it prettier.
generate.command.string <- function( matched.call.data )
{
  command.string <- as.character( bquote( .( list( matched.call.data ) ) ) )
  sapply( bquote( .(command.string) ),
                  USE.NAMES=FALSE,
                  function( x )
                    gsub( "\\\"", "\'", as.list( match.call() )$x )[[2]] )
}

# Some generating function...
generate.matrix <- function( nrows, ncols, data=NA ) {
  # Some generated object
  mat <- matrix( data= data, nrow= nrows, ncol= ncols )

  matched.call.data <- do.call( "call",
                                c( list( as.character( match.call()[[1]] ) ),
                                lapply( as.list( match.call() )[-1], eval ) ) )
  comment( mat ) <- c( Generated= date(),
                       Command = generate.command.string( matched.call.data ) )

  mat
}

# Generate an object with a missing argument.
emptyMat <- generate.matrix( nrows=2, ncols=2 )
comment( emptyMat )

# Generate without formally stating arguments.
dataMat <- generate.matrix( 2, 2, sample(1:4, 4, replace= TRUE ) )
comment( dataMat )

# And with a longer command.
charMat <- generate.matrix( 3, 3,
                  c( 'This', 'is', 'a', 'much', 'longer',
                     'argument', 'section', 'that', 'wraps') )
comment( charMat )

# And with a variable.
myData <- c( 'An', 'expanded', 'command', 'argument')
charMat2 <- generate.matrix( 2, 2, myData )
comment( charMat2 )

# Create a new object from an original command.
Sys.sleep(1)
emptyMat2 <- eval( parse( text= comment( emptyMat )[['Command']] ) )
dataMat2 <- eval( parse( text= comment( emptyMat )[['Command']] ) )

# Check equality of the static matrices.
identical( emptyMat, emptyMat2 )

# The generation dates are different.
all.equal( emptyMat, emptyMat2, check.attributes= FALSE )
comment( emptyMat )['Generated'] <- NA
comment( emptyMat2 )['Generated'] <- NA
identical( emptyMat, emptyMat2 )

# Command argument structure still works too.
str( as.list( match.call(
  generate.matrix, parse( text=comment( charMat2 )[[ 'Command' ]] ) ) )[-1] )

2

আর: repoপ্যাকেজে অবজেক্ট ম্যানেজমেন্টের জন্য আমার সাধারণ সমাধানটি পরামর্শ দেওয়ার অনুমতি দিন । এটি ব্যবহার করে, আপনি প্রতিটি ভেরিয়েবলকে একটি দীর্ঘ নাম, একটি বিবরণ, ট্যাগগুলির একটি সেট, একটি দূরবর্তী url, নির্ভরতা সম্পর্ক নির্ধারণ করতে পারেন এবং পরিসংখ্যান বা জেনেরিক বাহ্যিক ফাইলগুলিও সংযুক্ত করতে পারেন। উদাহরণস্বরূপ, উত্স কোডটি একটি সংগ্রহস্থল আইটেম হিসাবে সংরক্ষণ করা যেতে পারে এবং এর দ্বারা উত্পাদিত সংস্থাগুলির সাথে সংযুক্ত করা যেতে পারে। (Cran সর্বশেষ স্থিতিশীল মুক্তি পাবেন install.packages("repo")) অথবা সর্বশেষ উন্নয়ন GitHubএখানে একটি দ্রুত ওভারভিউ । আশা করি এটা সাহায্য করবে.

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