data.frame(number = c(1,2,3,4),name = c("Aさん","Bさん","Cさん","Dさん")) number name
1 1 Aさん
2 2 Bさん
3 3 Cさん
4 4 Dさん
それでは、データフレームを作成していきましょう!
と、その前に、注意点としては、
データフレームを作成するためには、data.frame関数を利用します。 この関数、使い方は難しくなくて、
data.frame(<列名>=<ベクトル>, <列名>=<ベクトル>, ... )
という書き方をすればOKです。実際にやっていましょう。
numberという列名と、nameという列名に、それぞれ次のようにc()でベクトルを作成して入れてあげると、
data.frame(number = c(1,2,3,4),name = c("Aさん","Bさん","Cさん","Dさん")) number name
1 1 Aさん
2 2 Bさん
3 3 Cさん
4 4 Dさん
なんとなく、表っぽい結果が返ってきました! ここで、書き方ですが、
data.frame(number = c(1,2,3,4),
name = c("Aさん","Bさん","Cさん","Dさん")) number name
1 1 Aさん
2 2 Bさん
3 3 Cさん
4 4 Dさん
data.frame(
number = c(1,2,3,4),
name = c("Aさん","Bさん","Cさん","Dさん")
) number name
1 1 Aさん
2 2 Bさん
3 3 Cさん
4 4 Dさん
こんな感じで、カンマの前後であれば改行しても大丈夫です。 他にも、
vec_num <- c(1,2,3,4)
vec_name <- c("A","B","C","D")
data.frame(number = vec_num, name = vec_name) number name
1 1 A
2 2 B
3 3 C
4 4 D
という風に、ベクトルを他の変数に入れてあげて作成することもできます。
書き方が行く通りにもあって最初は混乱するかもしれませんが、うまく改行や複雑な部分を変数にいれることができれば、すっきりと読みやすいコードになりますので、慣れてきたら、読みやすいコードを意識して書いてみてもよいかもしれません。
ところで、表の要素の長さが違うとどういうことがおこるでしょう?
data.frame(number = c(1,2,3),
name = c("Aさん","Bさん","Cさん","Dさん"))Error in data.frame(number = c(1, 2, 3), name = c("Aさん", "Bさん", : arguments imply differing number of rows: 3, 4
エラーがでましたね。ベクトルの行数が違うと怒られました。
こんな感じで、ベクトルの長さが同じでないとデータフレームは作成できないので、注意が必要です。
ただし、それぞれの行数が、最大の行数の整数倍になっているのであれば、(今回のケースであれば、nameが4行なので、numberが2行とか)であれば、エラーは起こらず、勝手に複製されます。
data.frame(number = c(1,2),
name = c("Aさん","Bさん","Cさん","Dさん")) number name
1 1 Aさん
2 2 Bさん
3 1 Cさん
4 2 Dさん
以上、データフレームの作成のやり方でした。 次は、データフレームの操作方法を少しだけ紹介します。