如何在R中创建一个考虑两个变量的for
循环?
类似于:
for(i in 1:10, j in 1:10) {
if vector[j] == vector2[i]
print(variable)
else print(NA) }
这应该给予我100个输出,而不是使用
vector[i] == vector[i]
这将产生10。
编辑:谢谢你的帮助,以下是我的实际数据:
for(i in 1:10) {
for(j in 1:10) {
if (i == j)
print(NA)
else if(st231_eq1_alg$Output[j] == st231_eq1_alg$Input[i])
print(st231_eq1_alg_f[i])
else if(st231_eq1_alg$Output[j] == st231_eq1_alg$Output[i])
print(st231_eq1_alg_inv_f[i])
else print(NA)
}
}
如何最好地表示这些输出?再次感谢。
6条答案
按热度按时间ergxz8rk1#
看起来你是在问一个嵌套的for循环
但我会推荐一种不同的方法
mmvthczy2#
您可以使用
outer
来执行此操作,并获得一个10x10矩阵,其结果如下:mzmfm0qo3#
你可以用嵌套的for循环来实现:
3b6akqbq4#
如果你写了两个嵌套循环,你的代码就可以工作了:
以下示例显示了更快获得此结果的不同可能性:
这里的优点是,你只有一个小循环,它只运行在两个向量中相等的那些条目上(在这种情况下是六个数字),而不是运行在矩阵的整个100个条目上的嵌套循环。
如果你想按顺序打印这个矩阵的条目,就像在嵌套循环中一样,你可以输入:
就与您的编辑相关的更改而言,我认为这应该有效:
0sgqnhkj5#
我意识到上面的解决方案在i和j相等时有效。对于i和j不相等的情况,我使用下面的代码:
结果是20,30,42
iklwldmw6#
我发现了一个相当简单的解决方案,如果你想仍然坚持你的For循环,并有多个变量。
你只需要使用循环来调用基于索引的变量,而不是直接调用变量本身。向量需要具有相同的长度。
所以循环看起来像这样:
希望有帮助!