に作成する方法はありますか?サイズM×NのデータフレームをR
私はこれにこだわっている:
m <- 10 # nof row
n <- 5 # nof column
# We will fill each cell with '0'
all <-c()
for (i in 1:m) {
row_i <- c(rep(0,n))
all <- c(all,row_i)
}
のみ出力として1行を作成し、どの。
に作成する方法はありますか?サイズM×NのデータフレームをR
私はこれにこだわっている:
m <- 10 # nof row
n <- 5 # nof column
# We will fill each cell with '0'
all <-c()
for (i in 1:m) {
row_i <- c(rep(0,n))
all <- c(all,row_i)
}
のみ出力として1行を作成し、どの。
なぜ行列を使用しないのですか? data.frames
は、さまざまな種類の列を格納するためのものです。だから、
、
m = 10
n = 5
mat = matrix(0, nrow = m, ncol = n)
あなたが本当にdata.frame
をしたい場合は、1に強制 - 列名は、単純にデフォルトになります。
dat = as.data.frame(mat)
names(dat)
[1] "V1" "V2" "V3" "V4" "V5"
あなたのアプローチの問題は、あなたが単に追加していることですあなたが望むディメンションを無視して、値を順番に並べ替えます。このようにすることはできますが、データを増やすのは良い考えではなく、上記のようにすべてを先に割り当てることをお勧めします。また、これはとにかく行列になります。これはあなたが使うべきだと思います。
警告:コードが間違っています!
m <- 10 # nof row
n <- 5 # nof column
all <- NULL
for (i in 1:m) {
row_i <- c(rep(0,n))
all <- rbind(all,row_i)
}
これにより、data.frameはゼロで埋められます。
as.data.frame(lapply(structure(.Data=1:N,.Names=1:N),function(x) numeric(M)))
mdsummerソリューションはよりエレガントですが、私の解決策を拡張して列のクラス。 –
「nof_range」は何ですか? – mdsumner
@mdsumner:申し訳ありませんが、私はそれを修正しました。 – neversaint
以下の答えが最適ですが、 'rbind'を' c 'ではなく 'all < - rbind(all、row_i)'を使用するとコードが動作します –