R - 使用数据框中的列值查找矩阵名称并汇总矩阵

R - Using column value in data frame to lookup matrix name and summarize matrix

我正在尝试向现有数据框添加一个新列,该列显示二进制矩阵中的个数。现有数据框中的一列具有矩阵名称,我正在尝试查找其 count/sum 。

例如,

r <- 10
c <- 10
MatA <- matrix(sample(0:1,r*c, replace=TRUE),r,c)
MatB <- matrix(sample(0:1,r*c, replace=TRUE),r,c)
MatC <- matrix(sample(0:1,r*c, replace=TRUE),r,c)

mat <- c("MatA","MatB","MatC")
size <- c(4,6,10)
df <- data.frame(mat,size)

我需要从 df 数据帧中查找 mat 列值,例如 MatA, MatB, MatC 以匹配矩阵名称 MatA, MatB, MatC 和 return每个二进制矩阵中的 1 添加到新列中的 df 数据帧。

我尝试使用循环、应用函数,但不知道如何使用 df$mat 中的列值 MatA 作为矩阵名称 MatA 和 return 的查找sum(MatA==1) 到数据框中的新列 df

使用get通过字符串引用变量

set.seed(7)
df$binary <- lapply(mat, function(x) sum(get(x)))

如果存储为因子,则使用 data.frame 列

df$binary <- lapply(levels(df$mat)[df$mat], function(x) sum(get(x)))

将列存储为字符串而不是因子

df <- data.frame(mat, size, stringsAsFactors = FALSE)
df$binary <- lapply(df$mat, function(x) sum(get(x)))

> df
   mat size binary
1 MatA    4     47
2 MatB    6     58
3 MatC   10     54