【问题标题】:Assign values to a empty matrix from other matrix in R将值分配给 R 中其他矩阵的空矩阵
【发布时间】:2014-10-14 12:03:17
【问题描述】:

我有一个空矩阵,我想用另外两个矩阵的值来填充它。 这是我的空矩阵:

Att_table_S01_E031_Mod <- matrix(NA, nrow = 16, ncol = 13)
colnames (Att_table_S01_E031_Mod) <- c("ID", "Area", "LU_1990", "LU_2000", "LU_2005", "CHLU_90_00", "CHLU_00_05", "Tile", "Unique_ID", "D_90_00", "D_00_05", "Source_90_00", "Source_00_05")

另外两个矩阵包含我想要包含在这个新矩阵中的信息,例如IDAreaLU_1990 等。但是,我还没有找到一种方法来做到这一点。一些提示将不胜感激。

矩阵 Att_table_S01_E031 似乎只有一列。你知道我该如何拆分它吗? [1] "ID.Area_ORG.LU_1990.LU_2000.CHLU_90_00.LU_2005.CHLU_00_05.Tile.UNIQ_ID.AREA.D_90_00.D_00_05.Sour_90_00.Sour_00_05.Conf_90_00.Conf_00_05"

【问题讨论】:

  • 请提供其他矩阵的可重现示例。
  • 这是一个:z
  • 第二个:Att_table_S01_E031
  • 比如我想将第一个矩阵的第一列包含的值用到新矩阵的第四列。
  • 请注意,当被要求在您的问题中提供更多代码时,最好编辑您的问题而不是在评论中添加内嵌代码

标签: r matrix assign


【解决方案1】:

对于互补矩阵,

columnsToTransfer <- c('ID','Area','Tile','Unique_ID','LU_1990')
otherColumns <- colnames(Att_table_S01_E031_Mod)[!(colnames(Att_table_S01_E031_Mod) %in% columnsToTransfer)]
Att_table_S01_E031_Mod[,columnsToTransfer] <- table2[,columnsToTransfer]
Att_table_S01_E031_Mod[,otherColumns] <- table3[,otherColumns]

如果两个较小的矩阵不能完全填满大矩阵,

columnsToTransfer1 <- c('ID','Area','Tile','Unique_ID')
columnsToTransfer2 <- 'LU_2000'
Att_table_S01_E031_Mod[,columnsToTransfer1] <- table2[,columnsToTransfer1]
Att_table_S01_E031_Mod[,columnsToTransfer2] <- table3[,columnsToTransfer2]

【讨论】:

  • 如果我将表 2 和表 3 替换为我的其他两个矩阵,我会收到以下错误消息: Att_table_S01_E031[, columnsToTransfer] 中的错误:下标超出范围你知道这是什么原因吗?
  • 看起来您没有“ID”、“Area”、“Tile”和“Unique_ID”作为列名。检查列名(Att_table_S01_E031_Mod)。他们都在吗?
  • 是的,但是在矩阵 z 中我只有一列带有 LU_2000,在矩阵 Att_table_S01_E031 中我的列比新矩阵 (Att_table_S01_E031_Mod) 多
  • 基本上,必须将矩阵 Att_table_S01_E031 中的列 ID'、'Area'、'LU_1990'、'Tile'、'Unique_ID' 转移到新矩阵和矩阵 z 中的列 LU_2000必须转移到新矩阵。
  • 列名 (z) [1] "LU_2000"
猜你喜欢
  • 2023-03-10
  • 1970-01-01
  • 2020-10-11
  • 1970-01-01
  • 2018-12-02
  • 1970-01-01
  • 2021-09-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多