Microsoft Open R 3.3では、データベースクエリから行をコピーして(データフレームを返す)、行列の行に挿入する方法はありますか?私は要素ごとにそれを行うことができますが、私は一度に行をコピーすることができるはずです。しかし、私はできません:Rのデータフレームから行列に行をコピーする方法は?
> m = matrix(0, nrow=2, ncol=3)
> dim(m)
[1] 2 3
> dim(m[1,])
NULL
> f = dbGetQuery("SELECT id, name, age FROM users")
> dim(f)
[1] 300 3
> dim(f[1,])
[1] 1 3
> m[1,] = f[1,]
> m[1,]
Error in m[1, ] : incorrect number of dimensions
> dim(m)
NULL
> m[1,] = f[1,]
Error in m[1, ] = f[1, ] :
incorrect number of subscripts on matrix
fをas.matrix(f)に変換することは役に立ちません。
なぜdim(m [1、])は "1 3"ではなく "NULL"ですか?
なぜm [1、] = f [1、]は初めてmのデータ構造を破壊する(dim(m)をNULLに変更する)が、2回目までエラーを報告しない?
これは、データフレームの行に異なるタイプが含まれている可能性がありますが、行列の行はできないと考えられます。フレームの1列は文字データであり、その他は整数です。
m [1、]は単なる数値ベクトルです。ディメンションを保持したい場合は、最初に '? '[''を読んで、 'drop'引数の使用に注意してください。構造は "破壊されていない"。あなたは単に出力を誤解しているだけです。 –
私は内部構造の次元が失われているので、構造が破壊されていると言います。 dim(m)は、その代入の後ではなくNULLを返します。その情報を質問に追加するために今編集する。 –
'f'がこれまでに提供された証拠からのデータフレームであったことは本当にわかりません。あなたは 'dput(f [1、]' –