将列表中的每一行数据帧除以相应的矩阵值

Dividing each row of data frames within a list by a corresponding matrix value

我有一个包含 3 个数据框的列表,每个框有 3 行 (op2) 和一个矩阵 (rep_totals)。每个数据框的每一行都与我矩阵中的一个值相关,趋势是:op2[[i]][j,] 对应于 rep_totals[i,j]

我想将 op2 中每个数据帧的每一行除以其在 rep_totals 中的相应值,以生成包含 3 个新数据帧 (gt_freqs) 的列表他们的调整值。

这是我尝试过的:

x = matrix(5,3,5) # creating example
x = as.data.frame(x)
op2 = list(x,x,x)
rep_totals = matrix(5,3,3)

gt_freqs <- replicate(length(op2), matrix(0, 3, 5), simplify = FALSE)
for(i in seq_along(op2)) for(j in seq_along(op2[[1]][1:3,])) gt_freqs[[i]] <- op2[[i]][j,]/rep_totals[i,j]

因此在此示例中,预期输出将是 3 个与 op2 大小相同的数据帧,只是值将全部调整为 1

在此先感谢您的帮助!

我们可以使用Map

Map(`/`,op2, asplit(rep_totals, 1))

使用 for 循环,它将是

for(i in seq_along(op2)) get_freqs[[i]] <- op2[[i]]/rep_totals[i,]