# 本題に入る前に、対象とするベクトルを作る必要があります。
# 次のコマンドを実行してください。
set.seed(10)
x <- sample(c(rnorm(100), rep(NA, 50)), 40)
x
##  [1]  0.18492596  1.52258634  0.14816796          NA -2.18528684
##  [6]  0.89292590          NA          NA -1.75908675          NA
## [11]  1.22702839  1.15534832          NA -0.90221194 -1.20807618
## [16]          NA          NA  0.38092221          NA -0.95494386
## [21]  0.98744470 -1.18394507          NA          NA  1.08655140
## [26] -0.10176101  0.23252515          NA          NA          NA
## [31]  0.34011564  0.50581926          NA -0.37366156 -0.07395583
## [36] -0.07794607          NA  0.29098749  0.06954478 -0.22266151
# これで全員が同じデータを処理することになります。

# では、まず、xの最初の10個の要素を取り出してください。
##  [1]  0.1849260  1.5225863  0.1481680         NA -2.1852868  0.8929259
##  [7]         NA         NA -1.7590868         NA
# x[is.na(x)] はどんな値になると思いますか。何番でしょうか。
# 1: すべてが NAのベクトル
# 2: TRUEとFALSEのベクトル
# 3: 長さ0 のベクトル
# 4: NAを持たないベクトル

# 実際に実行して確認してください。

# 次に
y <- x[!is.na(x)] 
# を実行してください。そして次に y を表示させましょう。
y
##  [1]  0.18492596  1.52258634  0.14816796 -2.18528684  0.89292590
##  [6] -1.75908675  1.22702839  1.15534832 -0.90221194 -1.20807618
## [11]  0.38092221 -0.95494386  0.98744470 -1.18394507  1.08655140
## [16] -0.10176101  0.23252515  0.34011564  0.50581926 -0.37366156
## [21] -0.07395583 -0.07794607  0.29098749  0.06954478 -0.22266151
# 次に、 y[y > 0] はどんな結果になるでしょうか。次の何番でしょうか。
# 1: すべてが NAのベクトル
# 2: TRUE と FALSE から構成されるベクトル
# 3: y のうち、すべてが正の数のベクトル
# 4: y のうち、すべてが負の数のベクトル
# 5: 長さ0のベクトル

# では、実行して確認しましょう。
y[y > 0]
##  [1] 0.18492596 1.52258634 0.14816796 0.89292590 1.22702839 1.15534832
##  [7] 0.38092221 0.98744470 1.08655140 0.23252515 0.34011564 0.50581926
## [13] 0.29098749 0.06954478
# NAの値を持つ x についてもどうなるか、x[x > 0]を実行してみましょう。
x[x > 0]
##  [1] 0.18492596 1.52258634 0.14816796         NA 0.89292590         NA
##  [7]         NA         NA 1.22702839 1.15534832         NA         NA
## [13]         NA 0.38092221         NA 0.98744470         NA         NA
## [19] 1.08655140 0.23252515         NA         NA         NA 0.34011564
## [25] 0.50581926         NA         NA 0.29098749 0.06954478
# x[!is.na(x) & x > 0] を実行すると、xのうち、NAではなく、且つ、正の数を取り出すことができます。
# 実行してみましょう。
x[!is.na(x) & x > 0]
##  [1] 0.18492596 1.52258634 0.14816796 0.89292590 1.22702839 1.15534832
##  [7] 0.38092221 0.98744470 1.08655140 0.23252515 0.34011564 0.50581926
## [13] 0.29098749 0.06954478
# 次に、c( )を使って、x の3番目、5番目、7番目の要素を取り出してください。
## [1]  0.148168 -2.185287        NA
# x[c(2, 10)]はx の2番目と10番目の要素を取り出しますが、反対に、2番目と10番目の要素以外の要素を
#  取り出したいということもあるでしょう。
# その場合は
x[c(-2, -10)]
##  [1]  0.18492596  0.14816796          NA -2.18528684  0.89292590
##  [6]          NA          NA -1.75908675  1.22702839  1.15534832
## [11]          NA -0.90221194 -1.20807618          NA          NA
## [16]  0.38092221          NA -0.95494386  0.98744470 -1.18394507
## [21]          NA          NA  1.08655140 -0.10176101  0.23252515
## [26]          NA          NA          NA  0.34011564  0.50581926
## [31]          NA -0.37366156 -0.07395583 -0.07794607          NA
## [36]  0.29098749  0.06954478 -0.22266151
# を実行します。
# x[-c(2, 10)] も同じ結果となります。実行してみましょう。
x[-c(2, 10)]
##  [1]  0.18492596  0.14816796          NA -2.18528684  0.89292590
##  [6]          NA          NA -1.75908675  1.22702839  1.15534832
## [11]          NA -0.90221194 -1.20807618          NA          NA
## [16]  0.38092221          NA -0.95494386  0.98744470 -1.18394507
## [21]          NA          NA  1.08655140 -0.10176101  0.23252515
## [26]          NA          NA          NA  0.34011564  0.50581926
## [31]          NA -0.37366156 -0.07395583 -0.07794607          NA
## [36]  0.29098749  0.06954478 -0.22266151
# 次に、ベクトルの要素に名前を付けることについて学びます。
vect <- c(foo=11, bar=2, norf=NA)
vect
##  foo  bar norf 
##   11    2   NA
# ベクトルの要素に名前が付いていることが分かります。

# その名前だけを取り出すときは
names(vect)
## [1] "foo"  "bar"  "norf"
# 要素に名前のないベクトルはこんな感じですね。
vect2 <- c(11, 2, NA)
vect2
## [1] 11  2 NA
# これに名前を付けてましょう。
names(vect2) <- c("foo", "bar", "norf")



# vect と vect2 が同じものかどうかは identical( )により確認できます。
identical(vect, vect2)
## [1] TRUE
# vectの2つ目の要素だけを取り出してみましょう。どうすればいいですか。そのコマンドを実行してください。
## bar 
##   2
# 別の方法でも実行してください。
## bar 
##   2
# 最後に、vectの2つ目と3つ目の要素だけを取り出すコマンドを実行してみましょう。
vect[2:3]
##  bar norf 
##    2   NA
vect[c("foo", "bar")]
## foo bar 
##  11   2