在不定义尺寸的情况下填充空的数据框

时间:2018-06-21 04:35:53

标签: r

我很好奇是否有一种无需定义尺寸即可填充空白数据框的方法。在我不知道最终结果将是多大的情况下,这对我可能很有用。

foo <- data.frame()

for (i in 1:5){
  foo[, i] <- sample(1:10, 10, replace = TRUE)
}

这给出了错误 Error in [<-.data.frame(*tmp*, , i, value = c(1L, 7L, 9L, 9L, 6L, : replacement has 10 rows, data has 0

我知道您可以定义尺寸,并且可以使用以下尺寸,但是我想知道是否还有其他方法可以不必这样做。

foo <- data.frame(matrix(nrow = 10, ncol = 0))

1 个答案:

答案 0 :(得分:0)

一种方法可能是

foo <- data.frame()
for (i in 1:5) foo <- rbind(foo, sample(1:10, 10, replace = TRUE))

等效于

for (i in 1:5) foo[i,] <- sample(1:10, 10, replace = TRUE)

然后,对其进行转置,即可获得所需的内容,即

> t(foo)
      1 2 3 4 5
X.1   8 6 8 1 9
X.2   4 3 4 3 1
X.3   6 2 1 3 7
X.4  10 7 8 4 1
X.5   3 4 6 3 1
X.6   4 4 5 4 2
X.7   9 5 5 3 8
X.8   9 1 4 7 1
X.9   7 4 4 5 9
X.10  5 4 2 2 6

(如前所述,只要可行,您可能希望定义foo的大小和结构,因为它会使代码更有效)。