【发布时间】:2017-09-04 20:53:18
【问题描述】:
假设我在 R 中有一个 2×3 零矩阵 A=matrix(0,2,3) 和另一个有 2 列的数据框,例如 DF = data.frame(a=c(1,1,1,1),b=c(2,2,2,2))。我想将数据框的一行分配给矩阵的一列,例如A[,1]=DF[4,]。问题是,这会将A 转换为一个列表并完全抛出A 的索引,这可能是因为DF 的行号和列名不同。我该如何解决这个问题?
【问题讨论】:
假设我在 R 中有一个 2×3 零矩阵 A=matrix(0,2,3) 和另一个有 2 列的数据框,例如 DF = data.frame(a=c(1,1,1,1),b=c(2,2,2,2))。我想将数据框的一行分配给矩阵的一列,例如A[,1]=DF[4,]。问题是,这会将A 转换为一个列表并完全抛出A 的索引,这可能是因为DF 的行号和列名不同。我该如何解决这个问题?
【问题讨论】:
DF[4, ] 给出一个单行数据框,它是一个列表,而矩阵是一个原子向量,它只能保存一种数据类型。您需要 unlist 数据框行并将其转换为原子向量,然后再将其分配给矩阵:
A[,1] = unlist(DF[4,])
A
# [,1] [,2] [,3]
#[1,] 1 0 0
#[2,] 2 0 0
【讨论】: