我有一个向量包含刚刚超过四分之一百万的值(我知道,数额巨大),我需要计算每个值之间的差异。因此,例如,在第一个值为202.7952的情况下,我想计算向量中每个其他值与202.7952之间的差异,并限制它,以便丢弃高于400的差异。然后,我希望它取第二个值(202.7956)并做同样的事情(包括上面的值)。这个我希望的最终结果将是我的向量中值的计算差异值的列表。例如: -计算向量中的值之间的差异
0.0004
0.0125
0.0136
etc
会从该列表中的后三个值取差值为第一价值,而且它做同样的事情之前,但在第二个值继续到下产生名单。但是,因为我的矢量中有25万个值,所以我知道可能存在一些计算问题。我已经产生的图像显示我的数据的分布: -
我从200至1500范围内,绝大多数落在200-500范围内的值的值。我试图用java做这件事,但是我遇到了内存问题,所以你们有没有想过/知道是否可以在R中做到这一点,以及我可以怎么做呢?
这是我的Java代码: -
public class matrixDiff {
public static void main(String[] args) throws IOException{
double[] values = new double[271730];
BufferedReader br = new BufferedReader(new FileReader("file"));
String value = br.readLine();
for(int i = 0; i < values.length; i++){
if(value != null){
values[i] = Double.parseDouble(value);
}
value = br.readLine();
}
for(int i = 0; i < values.length; i++){
double mzValue = values[i];
System.out.println(mzValue);
for(int j = 0; j < values.length; j++){
double diff = values[j];
if((diff - mzValue) < 400 || (diff - mzValue) > -400){
System.out.println(diff - mzValue);
}
}
}
}
}
感谢
你绝对可以在R中做到这一点,但你也可以在Java中做到这一点。如果您已经了解了Java的基础知识,那么我会花一些时间学习如何优化代码,而不是仅仅为了这个非常专业的目的而学习一门新的语言。 – 2015-03-13 11:38:02
可能是一个好主意,找出有多少值超过400,然后去选择一种方法。向量可能会变小很多,而250k对于R来说并不是真正的问题 – 2015-03-13 11:40:02
只是好奇,下一步你需要做什么? – 2015-03-13 11:43:15