Use R as a bash language

R language could be easily used as a bash script using Rscript *.R. system() is a R base function which could run command line within R.

Below is a simple example which allows to automate create a new blog post: (1) Ask users to type in filename, title and language (2) Create a new markdown file in specific directory (i.e. your local posts saved path) (3) Add some metadata in .md file (4) Open the file using your favorite markdown editor.

cat('Your filename > ')
filename <- scan(file = "stdin", what = "character", n=1, sep = "-")

cat("Your post's title > ")
title <- scan("stdin", what = "character", n=1, sep = "-")

cat("language is zh or en > ")
lang <- scan("stdin", character(), n=1)

draft = TRUE

md.metadata =
  paste0("---
title: ", title,"
date: ",Sys.Date(),"
draft: ", tolower(draft) ,"
categories:
  - blog
tags:
  - Blog
---")

if (lang == "zh"){
  ## create a file name
  postname = paste0(Sys.Date(), "-",gsub(" ", "-", filename, fixed = TRUE), "." ,lang,".md")
  ## Chinese Path
   filepath = paste0(
    "/Users/jihong/Documents/hugo-academic-jihong/content/post/zh/",
    postname)

   cmd = paste0("cd /Users/jihong/Documents/hugo-academic-jihong/content/post/zh/ && open ", postname)
} else {
  postname = paste0(Sys.Date(), "-",gsub(" ", "-", filename, fixed = TRUE), ".md")
  ## English Path
  filepath = paste0(
    "/Users/jihong/Documents/hugo-academic-jihong/content/post/",
    postname)

  cmd = paste0("cd /Users/jihong/Documents/hugo-academic-jihong/content/post/ && open ", postname)
}


write.table(md.metadata, file = filepath, quote = FALSE, row.names = FALSE,col.names = FALSE)

system(cmd)
Jihong Zhang
Jihong Zhang
Education Researcher

My research interests mainly focus on the Bayesian Diagnostic Classification Models (DCMs) - a special kind of Item Response Model and the model checking method, as applied in the psychological, educational, and social sciences. I seek to improve the utility of advanced psychometric modeling and provide easy-to-use tools or softwares for researchers.

comments powered by Disqus

Related