作者koai (可笑的自以为...)
看板Statistics
标题Re: [程式] R中的if条件
时间Thu Mar 21 15:22:03 2013
try this:
v # <-- your data
temp=v[,1];
new.A=temp-a;
new.B=12-a+temp;
index.A=which(temp==a)
index.B=which(temp!=a)
v[index.A,1]=new.A[index.A]
v[index.B,1]=new.B[index.B]
※ 引述《piq (享)》之铭言:
: 感谢大家的建议
: 其实一开始最简单的方法是用for
: 但是因为真实在跑分析时
: v[,1]的长度大约是17万6000个
: 也就是说v是一个176000x20up的矩阵
: 如果这时候用for(i 1:length(v[,1]))是可以跑...
: 但是会跑非常久~我并不想要这样
: 而A,B两运算是要把v[,1]重新编程一个号码 只是规则不同
: 有想过用ifelse但似乎是失败了
: ifelse(v[,1]==a,A,B)
: 分析上 A运算是:v[i,1]-a
: B运算是:12-a+v[i,1]
: 所以我当初是写成: ifelse(v[,1]==a,v[i,1]-a,12-a+v[i,1])
: 但是不能跑..
: 莫非是ifelse里面不能用逻辑算式?
: 还有是recodes指令...
: 我的R只接跟我说没有这个指令 囧
: 所以我在想是否还有其他的方法~"~
: : [软体程式类别]:
: : R
: : [程式问题]:
: : if条件问题
: : [软体熟悉度]:
: : 低(1~3个月)
: : [问题叙述]:
: : v是一个矩阵
: : a是一个我们任意给的数(已知)
: : 今天我希望v中的某行(假设第一行) 中的各元素做是否等於a的判断运算
: : 我希望能在不用for下 完成我想要的运算
: : 但是一直想不出
: : [程式范例]:
: : 以下为大略范例
: : +if(v[,1]==a){执行A运算}
: : +else{执行B运算}}
: : Warning message:
: : In if (a == v[, 1]) { :
: : 条件的长度 > 1,因此只能用其第一元素
: : ===
: : 想请问高手能有办法步用for的状况下
: : 比对v[,1]中的元素是否等於a做逻辑运算吗?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 203.73.70.8
1F:→ koai:写完才发现楼上已经有人写了这个方法... @@" 03/21 15:27
2F:→ piq:感谢您的建议^^ 03/21 20:19