This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see http://rmarkdown.rstudio.com.
When you click the Knit button a document will be generated that includes both content as well as the output of any embedded R code chunks within the document. You can embed an R code chunk like this:
# 次の関数を実行してください。
Sys.Date()
## [1] "2015-06-15"
date()
## [1] "Mon Jun 15 09:32:42 2015"
# 次に、これまで習った関数を使って、2, 4, 5の3つの数字の平均を求めてください。
# 自分で関数を作る方法は次のとおり。
# function_name <- function(arg1, arg2){
# # 必要な演算式を書く
# # 戻る値を書く
# }
# 例えば、
my_first_function <- function(x) {
x
}
# 実際に、my_first_function関数を使ってみてください。
# たとえば、my_first_function(“Hello World”)
# my_first_function(“ なんでも “)
# 関数名だけを実行すると、その関数が表示されます。
my_first_function
## function(x) {
## x
## }
# 次に、自分で平均を計算する関数 my_meanを作ってください。
# my_mean <- function(my_vector) {
# コードを書く
# 戻り値を書く
# }
# ヒント1:sum()とlength()を使う。
# ヒント2:平均値 = sum()合計 割る length()数値の個数
# うまく動くとこんな結果になります。
# my_mean(c(4, 5, 10))
# [1] 6.333333
# 次の関数を定義してください。
increment <- function(number, by = 1){
number + by
}
# そして次のコードを実行してください。
increment(5)
## [1] 6
# 2つ目の引数を省略することができ、省略した場合は、1が割り当てられます(デフォルト値)。
# 次に余りを求める関数 remainderを作ってください。
# ただし、divisorのデフォルト値を2に設定してください。
# remainder <- function(num, divisor) {
# コードを書く
# 戻り値を書く
# }
# ヒント:例えば 7 %% 4 は3となります。 %% が余り求める演算子。
# 実は関数の名前を引数にすることもできます。
# 次の事例では、関数add_two_numbers と multiply_two_numbers を定義し、
# さらに、それらの関数を使う関数 some_functionを定義します。
#
add_two_numbers <- function(num1, num2){
num1 + num2
}
#
multiply_two_numbers <- function(num1, num2){
num1 * num2
}
#
some_function <- function(func){
func(2, 4)
}
# some_function(add_two_numbers) と
# some_function(multiply_two_numbers) を実行してください。
# さあ、練習問題です。
# 関数 evaluateを定義してください。funcが引数としての関数名、datは渡すデータです。
# evaluate <- function(func, dat){
# Write your code here!
# Remember: the last expression evaluated will be returned!
# }
# 1. evaluate(sum, c(2, 4, 6)) では結果は 12
# 2. evaluate(median, c(7, 40, 9)) では結果は 9
# 3. evaluate(floor, 11.1) では結果は 11
#
# 関数 evaluate はできましたか。
#
evaluate <- function(func, dat){
func(dat)
}
#
# その関数 evaluate を使ってベクトル c(1:100)の平均を求めてください。
# こんなこともできます。
evaluate(function(x){x+1}, 6)
## [1] 7
# このように関数名がない関数なので、アノニマス関数(匿名関数)と呼びます。
# さあ、アノニマス関数を作ってください。
# つぎのベクトル c(8, 4, 0)のうち、最初の要素を返すアノニマス関数を作って実行してください。
# evaluate(function(x) ????, c(8, 4, 0))
#
# 今度は、最後の要素を返すアノニマス関数を作って実行してください。
# evaluate(function(x) ????, c(8, 4, 0))
# 関数length を使って作ります。
# できましたか。
#
#
# 次の関数に移ります。関数 paste()を使ってみましょう。
# まず関数paste() について調べてみます。
?paste
# paste( )の引数は次の通りです。
# paste (..., sep = " ", collapse = NULL)
# 引数の最初に ... が定義されています。
# ... これが省略を表す引数「ドット・ドット・ドット」です。
# 関数 pasteは、次のように使います。
paste("R Programming", "is", "fun!")
## [1] "R Programming is fun!"
# 関数pasteを使って関数simon_saysを作ってみます。
simon_says <- function(...){
paste("Simon says:",...)
}
#
# 関数simon_says は、最初に"Simon says:”を付けて、あとは関数pasteと同じ働きをします。
# 例えば、、、、
simon_says("hello there", "my friends")
## [1] "Simon says: hello there my friends"
#次に関数pasteを使って"START” で始まり "STOP” で終る文字列を作る関数を作ってください。
# telegram <- function(...){
# paste("START", ..., ???)
# }
#
# そして、関数telegramを使ってみましょう。
# 例えば、telegram(“It is a fine day.”, “How about tomorrow?”)
#
# 次の関数に移ります。
add_alpha_and_beta <- function(...){
args <- list(...) #まずlistの中にある省略値を、argsという変数に割り当てます。
alpha <- args[["alpha"]] #alphaとbetaという引数が指定されていることを想定しています。
beta <- args[["beta"]] #[[ ]]によりリストの中にある値を取り出します。
alpha + beta # alpha と beta を足します。
}
# この関数add_alpha_and_betaを使うときには、alphaとbetaの引数(いずれも数値)を明示的に示すことを想定しているので、、、次のように使います。
add_alpha_and_beta(alpha=100, beta=200)
## [1] 300
#
# mad_libs <- function(...){
# 同じように、次の関数pasteの引数、place, adjective, nounに対して値を代入するコードを書く。
# 次の関数paste()には変更はありません。
# paste("News from", place, "today where", adjective, "students took to the streets in
# protest of the new", noun, "being installed on campus.")
# }
# 実際に関数mad_libsを使ってみましょう。
#
# この演習の最後の関数です。
# 加減乗除の演算子は+, -, *, / を使いますが、このような演算子を作ってみましょう。
#
# その演算子は次の構造にします。
# %[なにかアルファベットなどの文字列]%
#
# 例えば、こんな演算子の関数を作ってみましょう。
#
"%mult_add_one%" <- function(left, right){ # {があることを忘れずに!
left * right + 1
}
#
# 実際に使ってみます。
4 %mult_add_one% 5
## [1] 21
# 21になったかな。
#
# さあ、今度は演算子の関数 %p% を作ってください。
#
# "Good" %p% "job!" を実行すると
# "Good job!" となるように作ってください。
# ヒント:関数paste を使います。
#
# %p% <- function(){ # Remember to add arguments!
#
# }
# できましたか。
# では、次の文字列、”I”, “love”, “R Programming!”を %p% を使ってくっつけてください。
#
# “I love R Programming!”となればこの演習は終わりです。
#