You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用R语言匹配起始/目标机器名并向空矩阵填充incremental id

R语言实现机器映射矩阵填充

方法一:基础R实现

先创建示例数据(可替换为你的真实数据):

# 构造包含机器映射关系的表格
machine_table <- data.frame(
  starting_machine = c("MachineA", "MachineB", "MachineA", "MachineC"),
  target_machine = c("MachineX", "MachineY", "MachineY", "MachineX"),
  incremental_id = c(1, 2, 3, 4),
  stringsAsFactors = FALSE
)

# 初始化空矩阵:行是所有唯一起始机器,列是所有唯一目标机器
unique_start_machines <- unique(machine_table$starting_machine)
unique_target_machines <- unique(machine_table$target_machine)
machine_matrix <- matrix(
  NA,
  nrow = length(unique_start_machines),
  ncol = length(unique_target_machines),
  dimnames = list(unique_start_machines, unique_target_machines)
)

通过索引匹配填充矩阵:

# 匹配起始机器对应的矩阵行索引、目标机器对应的矩阵列索引
row_indices <- match(machine_table$starting_machine, rownames(machine_matrix))
col_indices <- match(machine_table$target_machine, colnames(machine_matrix))

# 填充对应位置的增量ID
machine_matrix[cbind(row_indices, col_indices)] <- machine_table$incremental_id

查看结果:

print(machine_matrix)
#          MachineX MachineY
# MachineA        1        3
# MachineB       NA        2
# MachineC        4       NA

方法二:tidyverse工具包实现(更简洁)

若习惯用tidyverse生态,可通过pivot_wider快速转换格式,再按需转成矩阵:

library(tidyverse)

# 转换为宽表格式
machine_wide <- machine_table %>%
  pivot_wider(
    names_from = target_machine,
    values_from = incremental_id
    # 若存在重复的(starting, target)组合,可通过values_fn指定处理逻辑,例如取最后一个值:
    # values_fn = list(incremental_id = last)
  )

# 转换为矩阵(可选,若需要矩阵格式)
machine_matrix_tidy <- machine_wide %>%
  column_to_rownames("starting_machine") %>%
  as.matrix()

内容的提问来源于stack exchange,提问作者Stambecco999

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 08:15:55