割り当てのために、私は引数として "id"を持つ関数を書いています。これは、ヌルデータフレームを作成し、forループで完全なケースの数(NAsなし)一連のCSVファイルに保存されます。これは、私が確認した2つのカラム(id、#完全なケース)を持つデータフレーム "dat"を与えます。今、私はid引数に基づいてこれをサブセット化するのに問題があります。私は、IDに相当するカラム1のサブセットにできなければならない:Rはデータフレームを列でサブセット化する
dat[which(dat[, 1] %in% id),]
私はこの機能を実行すると、何も(何も出力、エラーなし)が返されていません。
dat <- data.frame("monitor"=integer(), "nobs"=integer())
dat_subset <- dat[which(dat[, "monitor"] %in% id),]
が、これは「未定義の列が選択」を返します。このサイトや他のいくつか検索した後、私はデータフレームを作成したとき、私はサブセット内の列を呼び出すために何かを持っているために、列に名前を付けてみました。 [1]
dat <- data.frame(ncol=2)
colnames(dat) <- c("ID", "nobs")
が、これはエラーを与えるの名前 '属性[2]ベクトルと同じ長さでなければなりません。だから、私は、データフレームを指定する別の方法を試してみました。長さ1のベクトルとは何ですか?私は2列のデータフレームを要求しませんでしたか?
これらのオプションをデバッグするのに役立つ人はいますか?どうもありがとう!
フィードバックに基づいて編集:データフレームによって正しく初期化されました(コメントのおかげで)。 dat < - data.frame( "ID" =整数(0)、 "nobs" =整数(0)) Str(dat)
私は正しくこれを行ったことを示しています 'data.frame':0 obs。 の$ ID:int型 $ NOBS:2つの変数の
for (i in 1:332) {
nobs <- sum(complete.cases(read.csv(files_list[i])))
rowvector <- c(i,nobs)
dat <- rbind(dat, rowvector)
}
'data.frame': 332 obs. of 2 variables:
$ X1L : int 1 2 3 4 5 6 7 8 9 10 ...
$ X117L: int 117 1041 243 474 402 228 442 192 275 148 ...
を:int型 ループの後str(dat)
を使用すると、列名が削除された示して私の問題は、次のループのためにあるようですのでなぜデータフレームにラインを追加するときに名前が固執しないのですか? ?rbind
は、「列名は最初の引数から適切な名前で取得されます」と述べています。
'?data.frame'を参照してください。関数に 'ncol'引数はありません。 'data.frame(ncol = 2)'を使ってそれを表示すると 'ncol'という名前の列を持つ' data.frame'が表示されます。 – JasonWang
ここで説明する多くの概念があります。広すぎる質問。私が見つけることができる間違いの1つはdat [、1]がdata.frameを返し、 'drop = TRUE'引数を使用してベクターにすることです。 –