# ←この記号の後は次の改行までコメントになります。

# Rの関数(function)とは何か?
# Rで行われる操作の全ては関数として定義されています。
# 前回出てきたc()やround()も関数です。

# 数字や文字列を組み合わせる(combine)関数 c()
# この関数によって、文字や数字を複数組み合わせてひとつの変数に格納した
# ベクター(vector)を作ることができます。
# 例えば、100人のデータに含まれる100個の年齢(数値)、100個の性別(名義)は
# Rではベクターとして扱います。

# 前回同様、RStudioの左下のConsoleに実際に打ちこんでみてください。

# 4つの要素を持つベクターができます。
c(6,1,3,8)
## [1] 6 1 3 8
# 複数の数字の平均を出力する関数がmean()です。
# このように関数に関数を被せることができます。
mean(c(6,1,3,8))
## [1] 4.5
# さらに四捨五入してみます。
# round() という関数を使います。
round(mean(c(6,1,3,8)),digits=0)
## [1] 4
# 上の例で、
#  c() は6,1,3,8という4つの数字を渡され、組み合わせてベクターにして出力しています。
#  mean() はc(6,1,3,8)というベクターを渡されて、この平均(4.5)を出力しています。
#  round()は4.5という数字を渡されて、小数点以下0桁(digits=0)で四捨五入して
#  出力しています。
# 
# これらの渡される数字(あるいは文字列)を引数(ひきすう)と言います。
# 
# 上記の例では、c()関数は4つの数字を、mean()関数はひとつのベクターを、
# round関数は2つの数字(四捨五入される数字と四捨五入する小数点以下の桁)を
# 引数としています。

# 幾つかの関数を例示します。
# 指数と対数
exp(1)
## [1] 2.718282
log(2.718282)
## [1] 1
log(100,base=10)
## [1] 2
# 三角関数
sin(pi/4)
## [1] 0.7071068
cos(pi/4)
## [1] 0.7071068
tan(pi/4)
## [1] 1
# 統計関数
# 平均
mean(c(1,1,1,2,3,5,9,16))
## [1] 4.75
# 標準偏差
sd(c(1,1,1,2,3,5,9,16))
## [1] 5.311712
# 中央値
median(c(1,1,1,2,3,5,9,16))
## [1] 2.5
# 四分位範囲(25%-75%ile)
quantile(c(1,1,1,2,3,5,9,16),probs=c(0.25,0.75))
## 25% 75% 
##   1   6
# データセットの要約を行うsummary()も、分布を出力するhist()も
# 実はすべて、引数を貰って出力を返す関数なのです。
summary(c(1,1,1,2,3,5,9,16))
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    1.00    1.00    2.50    4.75    6.00   16.00
hist(c(1,1,1,2,3,5,9,16))

# 引数が与えられなくても実行可能な関数もあります。
citation()
## 
## To cite R in publications use:
## 
##   R Core Team (2018). R: A language and environment for
##   statistical computing. R Foundation for Statistical Computing,
##   Vienna, Austria. URL https://www.R-project.org/.
## 
## A BibTeX entry for LaTeX users is
## 
##   @Manual{,
##     title = {R: A Language and Environment for Statistical Computing},
##     author = {{R Core Team}},
##     organization = {R Foundation for Statistical Computing},
##     address = {Vienna, Austria},
##     year = {2018},
##     url = {https://www.R-project.org/},
##   }
## 
## We have invested a lot of time and effort in creating R, please
## cite it when using it for data analysis. See also
## 'citation("pkgname")' for citing R packages.
Sys.time()
## [1] "2018-06-06 12:01:50 JST"
getwd()
## [1] "/Users/Atsushi 1/R/REducation"
# 関数のヘルプファイルを見るときは、?関数名で
?round