R:追加問題の解答 新納浩幸 問題(1)の解答 player A B C D E F G H I J K L M N O P Q R S T U HR 18 17 14 8 6 1 24 18 2 1 5 1 1 4 0 0 0 0 0 50 12 RBI 56 53 58 42 52 8 67 73 3 8 37 6 7 11 3 2 0 2 1 107 33 AVG 242 306 314 244 257 219 281 298 208 233 310 228 277 220 400 118 250 261 188 334 318 df ← read.table(”datafile”,header=T) (問題1) 上記データをファイルに保存して、そのファイルから上記データを data.frame として読み込め。 問題(2)の解答 (問題2) itm は "HR" か "RBI" か "AVG" の値をとるとする。 問題1で作った data.frame と itm を入力し、その 平均 itm 数、最高 itm 数、最低 itm 数、最高 itm 数をもつ選手、 の4組を取り出す関数 bunseki を作成せよ。 ただし itm の入力がない場合は itm="AVG" として処理するようにせよ。 例えば、 itm="HR" なら、 8.666667, 50, 0, T の4組を返す。この4組のデータ構造は何でも良い。 bunseki <- function(df,itm="AVG") { ids <- which(df[itm] == max(df[itm])) lt <- list(mean=mean(df[itm]),max=max(df[itm]), min=min(df[itm]),maxplayer=df[ids[1],]["player"]) lt } 問題(2)の別解答 多くの人は attach を使っていました。 attach を使うと itm を文字列にしなくてすみます。 bunseki3 <- function(df,itm=AVG) { attach(df); ids <- which(itm == max(itm)) lt <- list(mean=mean(itm),max=max(itm), min=min(itm),maxplayer=player[ids[1]]) lt } which の利用例 > x ← 10:20 >x [1] 10 11 12 13 14 15 16 17 18 19 20 > y ← which(x %% 2 == 0) >y [1] 1 3 5 7 9 11 > x[y] [1] 10 12 14 16 18 20 > その他 関数はファイル( bunseki.r )に書いて、それを > source(”bunseki.r”) > と読み込んで使うのが普通です。
© Copyright 2024 ExpyDoc