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

时间:2017-08-16 16:10:58

标签: r matrix global

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

例如,

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)

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

我尝试使用循环,应用函数,但我们迷失了如何使用MatA中的列值df$mat作为矩阵名MatA的查找并返回sum(MatA==1)数据框df中的新列。

1 个答案:

答案 0 :(得分:0)

使用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