3

有没有办法做到这一点?

我坚持这个:

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 行作为输出。

4

2 回答 2

7

为什么不使用矩阵?data.frames用于存储不同类型的列。

所以,

m = 10
n = 5
mat = matrix(0, nrow = m, ncol = n)

如果你真的想要一个data.frame,强制为一个 - 列名将只是一个默认值:

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)
}
于 2012-05-11T02:05:28.790 回答
4

这会产生用零填充的 data.frame。

as.data.frame(lapply(structure(.Data=1:N,.Names=1:N),function(x) numeric(M)))
于 2012-05-11T04:30:50.473 回答