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
我正在尝试向现有数据框添加一个新列,该列显示二进制矩阵中的个数。现有数据框中的一列具有矩阵名称,我正在尝试查找其 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