どうも、ちょげ(@chogetarou)です。
データフレーム(data.frame)をループする方法を紹介します。
方法

データフレーム(data.frame)をループする方法は、3つあります。
特定の列をループ
1つ目は、特定の列をループする方法です。
まず、for(){}を記述します。
()内で、inの左辺にループ変数、右辺に「$」で選択したデータフレームの列を指定します。
そして、{}内にループ処理を指定します。
ループ処理では、ループ変数でデータフレームの選択した列の値を取得します。
#data=対象のデータフレーム, col=対象の列
for(value in data$col) {
#ループ処理
#ループ変数「value」でデータフレームの列の値を取得
}
上記のfor-in文は、対象のデータフレーム(data.frame)の選択した列をループします。
使用例
nums <- data.frame(col1=c(1, 2, 3, 4, 5),
col2=c(6, 7, 8, 9, 10),
col3=c(11, 12, 13, 14, 15),
col4=c(16, 17, 18, 19, 20))
nums
for(value in nums$col3) {
print(value)
}
出力:
> nums
col1 col2 col3 col4
1 1 6 11 16
2 2 7 12 17
3 3 8 13 18
4 4 9 14 19
5 5 10 15 20
> [1] 11
[1] 12
[1] 13
[1] 14
[1] 15
行番号でループ
2つ目は、行番号でループする方法です。
まず、for(){}を記述します。
()内で、inの左辺にループ変数、右辺に「1:nrow(データフレーム)
」を指定します。
そして、{}内にループ処理を指定します。
ループ処理では、ループ変数でデータフレームの行番号を取得します。
#data=対象のデータフレーム
for(rowNumber in 1:nrow(data)) {
#ループ処理
#ループ変数「rowNumber」でデータフレームの行番号を取得
}
上記のfor-in文は、対象のデータフレーム(data.frame)を行番号でループします。
使用例
nums <- data.frame(col1=c(1, 2, 3, 4, 5),
col2=c(6, 7, 8, 9, 10),
col3=c(11, 12, 13, 14, 15),
col4=c(16, 17, 18, 19, 20))
for(rowNumber in 1:nrow(nums)) {
print(nums[rowNumber,])
}
出力:
col1 col2 col3 col4
1 1 6 11 16
col1 col2 col3 col4
2 2 7 12 17
col1 col2 col3 col4
3 3 8 13 18
col1 col2 col3 col4
4 4 9 14 19
col1 col2 col3 col4
5 5 10 15 20
列番号でループ
3つ目は、列番号でループする方法です。
まず、for(){}を記述します。
()内で、inの左辺にループ変数、右辺に「1:ncol(データフレーム)
」を指定します。
そして、{}内にループ処理を指定します。
ループ処理では、ループ変数でデータフレームの列番号を取得します。
#data=対象のデータフレーム
for(colNumber in 1:ncol(data)) {
#ループ処理
#ループ変数「colNumber」でデータフレームの列番号を取得
}
上記のfor-in文は、対象のデータフレーム(data.frame)を列番号でループします。
使用例
nums <- data.frame(col1=c(1, 2, 3, 4, 5),
col2=c(6, 7, 8, 9, 10),
col3=c(11, 12, 13, 14, 15),
col4=c(16, 17, 18, 19, 20))
for(colNumber in 1:ncol(nums)) {
print(nums[,colNumber])
}
出力:
[1] 1 2 3 4 5
[1] 6 7 8 9 10
[1] 11 12 13 14 15
[1] 16 17 18 19 20
まとめ
データフレーム(data.frame)をループする方法は、次の3つです。
- 特定の列をループする方法
for(value in data$col) { ループ処理 }
- 行番号をループする方法
for(rowNumber in 1:nrow(data)) { ループ処理 }
- 列番号をループする方法
for(colNumber in 1:ncol(data)) { ループ処理 }
コメント