楼主: hawaq
1660 5

[问答] R语言程序错在哪里 [推广有奖]

  • 0关注
  • 0粉丝

已卖:42份资源

硕士生

5%

还不是VIP/贵宾

-

威望
0
论坛币
2248 个
通用积分
3.0300
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
693 点
帖子
45
精华
0
在线时间
150 小时
注册时间
2014-5-22
最后登录
2024-10-29

楼主
hawaq 发表于 2015-12-13 18:21:38 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
for(i in c(1:4,9:15,18,20:21,23))
{b[,i]=(b[,i]-min(b[,i]))/(max(b[,i])-min(b[,i]))}

for(i in c(5:8,16:17,19,22,24:25))
{b[,i]=(max(b[,i])-b[,i])/(max(b[,i])-min(b[,i]))}
b
for(i in 1:11){for(j in 1:25){
  if(b[i,j]==0){if(a[i,j]==max(a[,j])){b[i,j]=(a[i,j]-mean(a[,j])/sd(a[,j]))}
  else{b[i,j]=(mean(a[,j])-a[i,j])/sd(a[,j])}}
}}
请问熵值法首先对数据进行均值化处理,依然有负值,请问错在哪里?

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:R语言 mean else max For

沙发
jiangbeilu 学生认证  发表于 2015-12-13 18:27:05
a和b分别是几行几列的矩阵。首先这样是没法定义矩阵的

藤椅
hawaq 发表于 2015-12-13 18:41:36
jiangbeilu 发表于 2015-12-13 18:27
a和b分别是几行几列的矩阵。首先这样是没法定义矩阵的
已经定义过了
a=as.matrix(data[,2:26])
b=as.matrix(data[,2:26])
a,b都是原始数据
想用标准化的非负值取代零值,不知错在哪里

板凳
jiangbeilu 学生认证  发表于 2015-12-13 22:21:58
hawaq 发表于 2015-12-13 18:41
已经定义过了
a=as.matrix(data[,2:26])
b=as.matrix(data[,2:26])
不介意的话,可以上传部分数据,可以实际操作一下。
你这样,其实也只告诉了a是25列的,但是没说是多少行的

报纸
suimong 发表于 2015-12-14 02:19:32
根据观察代码的结果,问题应该出在代码的最内层else。if判断a[i,j]是否为第j列的最大值,如果不是的话执行else,这时候a[i,j]虽然不是第j列的最大值,但是一定会有一些a[i,j]会大于第j列的平均值吧?也就是说,else里的mean(a[,j])-a[i,j]有可能小于0.

地板
藉風說雨 学生认证  发表于 2015-12-14 10:38:33
mean(a[,j])-a[i,j]可能会是负的,最后吐槽下,你这代码风格10个人看了11个人都不愿意去改

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-26 05:26