কমান্ড লাইন থেকে আর স্ক্রিপ্ট চালান


483

আমার কাছে একটি ফাইল রয়েছে, যার নাম a.rরয়েছে এটি chmod755 এর একটি ,

sayHello <- function(){
   print('hello')
}

sayHello()

কমান্ড-লাইনের মাধ্যমে আমি এটি কীভাবে চালাতে পারি?



5
tl; dr: আপনার স্ক্রিপ্টের প্রথম লাইন হিসাবে কেবল যুক্ত করুন:#!/usr/bin/env Rscript
মাইকেল

উত্তর:


670

আপনি যদি আউটপুটটি টার্মিনালে মুদ্রণ করতে চান তবে রুপলিপি ব্যবহার করা ভাল

Rscript a.R

নোট করুন যে R CMD BATCH a.Rআউটপুটটিকে স্ট্যান্ডার্ড আউট এ ডাইরেক্টর করার পরিবর্তে এবং টার্মিনালে প্রদর্শন করার পরে a.Rout নামে একটি নতুন ফাইল তৈরি করা হবে।

R CMD BATCH a.R
# Check the output
cat a.Rout

রুপলিপি ব্যবহারের ক্ষেত্রে অন্য একটি বিষয় লক্ষণীয় হ'ল এটি methodsডিফল্টরূপে প্যাকেজটি লোড করে না যা বিভ্রান্তির কারণ হতে পারে। সুতরাং আপনি যদি এমন কোনও পদ্ধতির উপর নির্ভর করে থাকেন যা পদ্ধতিগুলি সরবরাহ করে তবে আপনি এটিকে আপনার স্ক্রিপ্টে স্পষ্টভাবে লোড করতে চাইবেন।

আপনি যদি সত্যিই ./a.Rস্ক্রিপ্ট কল করার উপায়টি ব্যবহার করতে চান তবে আপনি স্ক্রিপ্টের #!শীর্ষে একটি উপযুক্ত যুক্ত করতে পারেন

#!/usr/bin/env Rscript
sayHello <- function(){
   print('hello')
}

sayHello()

আমি আরও লক্ষ করব যে আপনি যদি * ইউনিক্স সিস্টেমে চলেছেন তবে সেখানে দরকারী লিটার প্যাকেজ রয়েছে যা আরকে সহজ কমান্ড লাইন পাইপিং সরবরাহ করে। স্ক্রিপ্টের মাধ্যমে চকচকে অ্যাপ্লিকেশন চালানোর জন্য লিটারার ব্যবহারের প্রয়োজন হতে পারে? আরও বিশদ এই প্রশ্নে পাওয়া যাবে ।


28
ছাড়া #! আপনার কমান্ড লাইন আপনার আদেশগুলি ব্যাখ্যা করে এমন একই দোভাষী ব্যবহার করে এটি কমান্ড-লাইন স্ক্রিপ্ট হিসাবে চালানোর চেষ্টা করে। এটি আর হবে বলে জানা যায় না, এমনকি ফাইলটি .R বা .r প্রত্যয়তে শেষ হলেও। দ্য #! ফাইলটিতে কোন ভাষা রয়েছে তা কমান্ড লাইনকে জানায়।
স্পেসডম্যান

4
আমি কয়েক বছর ধরে এখানে কয়েকটি প্রশ্ন পেয়েছি এবং লিটার এবং রুপলিপি উভয়ই উল্লেখ করতে সক্ষম হয়েছি। প্রধান জিনিস হ'ল লোকদের বলা, যেমনটি আপনি করেছেন, R CMD BATCHতা ভয়ানক। আর কিছুই না ...
ডার্ক এডেলবুয়েটেল

@ ডেসন আমি আর স্ক্রিপ্টের সাথেও কাজ করছি এবং আমি জাভা প্রোগ্রাম থেকে আর স্ক্রিপ্ট কার্যকর করার চেষ্টা করছি এবং আমি কিছু ত্রুটি দেখতে পাচ্ছি। এখানে আমার প্রশ্ন । আপনি সাহায্য করতে পারেন কিনা দেখুন। এটি সহজ করার জন্য আমি আপনার হ্যালো ফাংশনের উদাহরণটি এখনই ব্যবহার করছি।
ব্যবহারকারী 1950349

কমান্ড নিজেই লাইব্রেরি পথ পরিবর্তন করার কোন উপায় আছে? এর মতো কিছুR CMD INSTALL -l ~/R/lib-dev
মাইক্মিটনবাইক্স

@mikemtnbike যে আমার জানা নেই Not স্ক্রিপ্টের ভিতরে .libPaths () পরিবর্তন করার জন্য কেউ সর্বদা কিছু যুক্ত করতে পারে। তবে আমি লিখিতরূপে ম্যান পেজে এই জাতীয় কোনও বিকল্প দেখতে পাচ্ছি না।
Dason

107

এটি সরাসরি প্রশ্নের উত্তর দেয় না। তবে কেউ এখানেই শেষ হতে পারে কারণ তারা টার্মিনাল থেকে আর এর অননিলার চালাতে চায়। উদাহরণস্বরূপ, আপনি যদি কিছু হারিয়ে যাওয়া প্যাকেজ ইনস্টল করতে চান এবং প্রস্থান করতে চান তবে এই অনলাইনারটি খুব সুবিধাজনক হতে পারে। আমি হঠাৎ করে জানতে পারি যে আমি কিছু প্যাকেজ মিস করেছি এবং আমি যেখানে চাই সেখানে সেগুলি ইনস্টল করতে চাই যখন আমি এটি ব্যবহার করি।

  • ডিফল্ট স্থানে ইনস্টল করতে:

    R -e 'install.packages(c("package1", "package2"))'
  • এমন কোনও স্থানে ইনস্টল করতে যাতে rootঅধিকারের প্রয়োজন হয় :

    R -e 'install.packages(c("package1", "package2"), lib="/usr/local/lib/R/site-library")' 

5
কমান্ড চালাতে আপনি Rscript -e "getwd()"টার্মিনালেও ব্যবহার করতে পারেন । রুপ্রিপ্ট কেবল কমান্ড আউটপুট প্রিন্ট করবে না পুরো আর স্টার্টআপ বার্তাটি।
পল রাউজিক্স

আপনি যদি আরও ছোট r -e "cat(getwd(),'\n')"ইনস্টল করা থাকে তবে আপনি এটি ব্যবহার করতে পারেন। ইন এই উত্তর ডির্ক Eddelbuettel littler এবং Rscript মধ্যে পার্থক্য ব্যাখ্যা করে।
পল রাউজিউক্স

2
আমার সমস্যাটি অনুমান করার জন্য আপনাকে ধন্যবাদ! আমার আরও একটি জিনিস দরকার ছিল:R -e 'install.packages("package", repos="http://cran.us.r-project.org")'
এরিন

4
R -r 'options(warn=2); install...'ইনস্টলেশনটি ব্যর্থ হওয়ার ক্ষেত্রে এক্সিকিউশনটি থামাতে এবং একটি শূন্য-ত্রুটি কোড পাওয়ার জন্য একজনকে ব্যবহার করা উচিত । অন্যথায়, কোনও install.packagesত্রুটি কেবল সতর্কতা।
রাভারানিকা


21

?Rscriptটার্মিনাল থেকে একটি আর স্ক্রিপ্ট চালানোর জন্য আপনার কমান্ডের প্রয়োজন ।

পরীক্ষা করে দেখুন http://stat.ethz.ch/R-manual/R-devel/library/utils/html/Rscript.html

উদাহরণ

## example #! script for a Unix-alike

#! /path/to/Rscript --vanilla --default-packages=utils
args <- commandArgs(TRUE)
res <- try(install.packages(args))
if(inherits(res, "try-error")) q(status=1) else q()

এটি আপনি কীভাবে কোনও আর স্ক্রিপ্ট লিখবেন / চালাবেন তার একটি উদাহরণ ছিল, আপনার ফাইলে #! / পাথ / থেকে / আরএসক্রিপ্ট যোগ করুন এবং তারপরে chmod + x <আপনার স্ক্রিপ্ট.আর> এবং। << আপনার স্ক্রিপ্ট.আর>
মেহুল রাঠোদ

10

একাধিক কমান্ড দ্বারা নিটার এবং রমার্কডাউন দিয়ে কীভাবে আরএমডি কমান্ড চালাতে হবে এবং তারপরে আরপিউবে একটি HTML ফাইল আপলোড করতে হবে

এখানে একটি উদাহরণ: দুটি গ্রন্থাগার লোড করুন এবং একটি আর কমান্ড চালান

R -e 'library("rmarkdown");library("knitr");rmarkdown::render("NormalDevconJuly.Rmd")'

R -e 'library("markdown");rpubsUpload("normalDev","NormalDevconJuly.html")'

3
মনে রাখবেন যে লাইব্রেরিটি লোড করা এড়ানো সহজ হবে; R -e 'markdown::rpubsUpload("normalDev","NormalDevconJuly.html")'
গ্রেগম্যাকফার্লেন

3

* ইউনিক্স সিস্টেমের জন্য রুপস্ক্রিপ্ট ব্যবহার করার অন্য একটি উপায় হ'ল প্রক্রিয়া প্রতিস্থাপন

Rscript <(zcat a.r)
# [1] "hello"

যা স্পষ্টতই গৃহীত উত্তরের মতো একই কাজ করে, তবে এটি আপনাকে কমান্ড লাইনের শক্তি সঞ্চয় না করে আপনার ফাইলটিকে পরিচালনা ও চালনা করতে দেয়, যেমন:

Rscript <(sed s/hello/bye/ a.r)
# [1] "bye"

অনুরূপ Rscript -e "Rcode"এটি একটি ফাইলে সংরক্ষণ না করেই চালাতে সক্ষম। সুতরাং এটি স্ক্রিপ্টগুলির সাথে একত্রে ব্যবহৃত হতে পারে যা আর-কোড উত্পন্ন করে, যেমন:

Rscript <(echo "head(iris,2)")
# Sepal.Length Sepal.Width Petal.Length Petal.Width Species
# 1          5.1         3.5          1.4         0.2  setosa
# 2          4.9         3.0          1.4         0.2  setosa

3

কেবলমাত্র ডকুমেন্টেশনের জন্য, কখনও কখনও আপনার স্ক্রিপ্টটি চালানো দরকার sudo:

sudo Rscript path/to/your/file.R

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