R双循环选择输出

时间:2013-02-07 14:31:37

标签: r loops double

我认为我有一个非常简单易懂的问题,但我不能自己提出解决方案。

我有一个包含10个元素的向量,我想得到一个新的向量,它包含第一个元素减去第二个元素,第一个元素减去第三个元素,依此类推。但是,在同一个向量中,我希望第二个元素的数字减去第三个,第二个元素减去第四个,等等,以及其他元素。

在我看来,我需要两个for循环来执行此操作,但是在运行以下脚本后,我得到了太多元素:

for (w in 1:test1){  
  for (u in 1:test1) {
     print(mean[[u]] - mean[[w]])  }}

现在我使用了print命令,但我想将结果分配给矢量。

提前谢谢!

1 个答案:

答案 0 :(得分:3)

ttt <- (1:5)^3
#[1]   1   8  27  64 125

result <- outer(ttt,ttt,"-")
#     [,1] [,2] [,3] [,4] [,5]
#[1,]    0   -7  -26  -63 -124
#[2,]    7    0  -19  -56 -117
#[3,]   26   19    0  -37  -98
#[4,]   63   56   37    0  -61
#[5,]  124  117   98   61    0

现在选择你需要的元素(这个问题对我来说并不完全清楚)。

也许你想要这个:

t(result)[lower.tri(t(result))]
[1]   -7  -26  -63 -124  -19  -56 -117  -37  -98  -61