# ←この記号の後は次の改行までコメントになります。
# 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