Matlab或R:按顺序用另一个矩阵的值替换矩阵中的元素

Matlab或R:按顺序用另一个矩阵的值替换矩阵中的元素,r,matlab,R,Matlab,我有一个问题要在Matlab或R中解决(最好是在R中) 假设我有一个包含10个元素的向量a 我还有一个包含30个元素的向量B,其中10个元素的值为“x” 现在,我想用从A中获取的相应值替换B中的所有“x”,顺序与A中确定的顺序相同。一旦获取A中的一个值,当找到B中的下一个“x”时,下一个值就可以使用了 请注意,A和B的大小不同,“x”单元的数量与A的大小一致 我试过不同的方法来做这件事。关于如何编程的任何建议?只要B中x条目的数量与A的长度相匹配,这将满足您的要求: B[B=='x'] <

我有一个问题要在Matlab或R中解决(最好是在R中)

假设我有一个包含10个元素的向量a

我还有一个包含30个元素的向量B,其中10个元素的值为“x”

现在,我想用从A中获取的相应值替换B中的所有“x”,顺序与A中确定的顺序相同。一旦获取A中的一个值,当找到B中的下一个“x”时,下一个值就可以使用了

请注意,A和B的大小不同,“x”单元的数量与A的大小一致


我试过不同的方法来做这件事。关于如何编程的任何建议?

只要
B
x
条目的数量与
A
的长度相匹配,这将满足您的要求:

B[B=='x'] <- A

B[B=='x']只要
B
中的
x
条目的数量与
A
的长度相匹配,这将执行您想要的操作:

B[B=='x'] <- A
B[B=='x']MATLAB解决方案
在MATLAB中,使用逻辑索引非常简单:

B(B == 'x') = A;
MATLAB解 在MATLAB中,使用逻辑索引非常简单:

B(B == 'x') = A;

非常感谢!这很容易,但我在一个无用的循环中迷失了方向。但是现在,如果A大于B中x的数目呢?然后,我们希望用B中的元素替换“x”,直到没有更多的“x”为止。它将按照您的预期工作,但如果大小不是彼此的倍数,则会发出警告。如果A更小,它会循环使用。只要试几个简单的例子,看看会发生什么。@eddi在这些情况下,它会达到我的预期,是的。我对提问者不是很确定。好吧,让我换一种说法,它将完全按照@user13837在他们的问题中所希望的那样工作。更好非常感谢!这很容易,但我在一个无用的循环中迷失了方向。但是现在,如果A大于B中x的数目呢?然后,我们希望用B中的元素替换“x”,直到没有更多的“x”为止。它将按照您的预期工作,但如果大小不是彼此的倍数,则会发出警告。如果A更小,它会循环使用。只要试几个简单的例子,看看会发生什么。@eddi在这些情况下,它会达到我的预期,是的。我对提问者不是很确定。好吧,让我换一种说法,它将完全按照@user13837在他们的问题中所希望的那样工作。更好