r - 矩阵中的循环 - 相对频率
问题描述
我想用 For 循环重新计算矩阵中的相对频率。我需要每列的总和为一。
我想将矩阵的每个值除以列的总和。
代码:
Ej<-matrix(data=c(1,2,3,4,5,6,7,8,9), nrow=3)
for ( i in 1:ncol(Ej)){
for (j in 1:nrow(Ej)){
Ej[i,j]<-Ej[i,j]/sum(Ej[,1])
}
}
sum(Ej[,1])
我想要这样的结果。
解决方案
我们可以sweep
在这里使用
sweep(Ej, 2, colSums(Ej), `/`)
# [,1] [,2] [,3]
#[1,] 0.1666667 0.2666667 0.2916667
#[2,] 0.3333333 0.3333333 0.3333333
#[3,] 0.5000000 0.4000000 0.3750000
虽然prop.table
@ThetaFC 建议是最简单的
prop.table(Ej, 2)
正如您所看到的,有很多方法可以在没有for
循环的情况下实现这一点,但是,如果您仍然想使用for
循环来进行学习,您可以在列上使用单循环来实现
for (i in 1:ncol(Ej)) {
Ej[,i] <- Ej[, i]/sum(Ej[,i])
}
推荐阅读
- amazon-web-services - 别名记录在 Route53 中不起作用
- node.js - 为什么我在 Firebase 中收到此错误“函数返回未定义、预期的承诺或值”
- c# - Better way to get Interval bounds when only time is given
- python - Mat不是数字元组openCV 2
- javascript - Google Analytics(分析)用户 ID 跟踪无法正常工作
- sql-server - MS Access / T-SQL - 分组间隔数据
- android - 如何将 json 文件从 Android 手机上传到 firebase 数据库?
- c# - 在等待的任务完成之前返回的函数
- scala - 如何使用模式获取子字符串并使用scala替换json值字段中的引号?
- r - 尝试在 R 中使用闪亮的应用程序创建未来值计算器并得到错误:参数 1(类型“闭包”)不能由“猫”处理