给定一个包含三列的表,
1 2 0.05
1 3 0.04
2 3 0.001
和一个具有定义维度的矩阵,
mat <- matrix(NA, nrow = 3, ncol = 3)
[,1] [,2] [,3]
[1,] NA NA NA
[2,] NA NA NA
[3,] NA NA NA
有没有一种有效的方法可以用 R 表的第三列中的条目填充矩阵,而不必遍历表、隔离索引并在 for 循环中插入值?
谢谢。
给定一个包含三列的表,
1 2 0.05
1 3 0.04
2 3 0.001
和一个具有定义维度的矩阵,
mat <- matrix(NA, nrow = 3, ncol = 3)
[,1] [,2] [,3]
[1,] NA NA NA
[2,] NA NA NA
[3,] NA NA NA
有没有一种有效的方法可以用 R 表的第三列中的条目填充矩阵,而不必遍历表、隔离索引并在 for 循环中插入值?
谢谢。
通常,表作为矩阵或数组处理,矩阵索引允许将两个列参数作为 (i,j) 索引(如果被索引的对象具有更高的维度,则使用具有更多列的矩阵),因此:
> inp.mtx <- as.matrix(inp)
> mat[inp.mtx[,1:2] ]<- inp.mtx[,3]
> mat
[,1] [,2] [,3]
[1,] NA 0.05 0.040
[2,] NA NA 0.001
[3,] NA NA NA
mat <- matrix(c(1, 1, 2, 2, 3, 3, 0.05, 0.04, 0.001), nrow = 3, ncol = 3)
mat
mat1 <- matrix(c(rep(NA,6), 0.05, 0.04, 0.001), nrow = 3, ncol = 3)
mat1
mat2 <- matrix(NA, nrow = 3, ncol = 3)
mat2
mat2[,3] <- c(0.05, 0.04, 0.001)
mat2
df <- data.frame(x=c(1, 1, 2), y=c(2, 3, 3), z=c(0.05, 0.04, 0.001))
df
mat3 <- matrix(NA, nrow = 3, ncol =3)
mat3
mat3[,3] <- df$z
mat3
mat4 <- matrix(NA, nrow = 3, ncol =3)
mat4
mat4[,3] <- unlist(df[3])
mat4