这就是 Arun 的答案有效的原因,以及另一种选择:
您应该避免将向量分配给数据框行,因为 R 数据框在每一列中可以有不同的变量类型。想象一下,您的列包含数字、字符串和因子;那么该数据框的一行不是向量(因为向量必须都是一种类型,即所有数字或所有因子),而是一个列表。如果您尝试在 R 期望列表的位置分配一个向量,则可能会发生不好的事情。
但是您可以将列表分配到数据框行中。例如:
> df <- data.frame(id=1:5, x1=1, x2=2)
> df
id x1 x2
1 1 1 2
2 2 1 2
3 3 1 2
4 4 1 2
5 5 1 2
> row2 <- list(x1=3, x2=4)
> df[2, c('x1','x2')] <- row2
> df
id x1 x2
1 1 1 2
2 2 3 4
3 3 1 2
4 4 1 2
5 5 1 2
或者,如果您知道(如您的示例中)一切都是数字的,只需构建一个矩阵而不是数据框。然后你可以将向量分配到矩阵行中,没问题。
> mat <- matrix(c(1:5, rep(1,5), rep(2,5)), 5, 3)
> colnames(mat) <- c("id","x1","x2")
> mat
id x1 x2
[1,] 1 1 2
[2,] 2 1 2
[3,] 3 1 2
[4,] 4 1 2
[5,] 5 1 2
> row2 <- c(3,4)
> mat[2, c("x1","x2")] <- row2
> mat
id x1 x2
[1,] 1 1 2
[2,] 2 3 4
[3,] 3 1 2
[4,] 4 1 2
[5,] 5 1 2