基于另一个向量截断向量值

JJJ*_*JJJ 0 r

这是我希望在R中实现的通用算法:

if (x[i]>y[i]) x[i] = y[i]
Run Code Online (Sandbox Code Playgroud)

x并且y当然载体.这个问题看起来像循环是解决方案.

42-*_*42- 8

几种可能性.首先使用ifelse函数(因为if(){} else {} constuct不适用于向量):

x <- ifelse( x > y, y, x)
Run Code Online (Sandbox Code Playgroud)

或者使用逻辑索引:

x[ x>y ] <- y[ x>y ]
Run Code Online (Sandbox Code Playgroud)

这两个都假设x和y的长度相同,并且隐式地比较和分配元素,因此不需要索引

  • 杰米 - 你需要解释你想如何改变.在我的数学2> 1.如果`y < - c(1,1,1)`和`x < - 1:3`(根据你的评论)然后在你的QI中给出"通用算法"需要改变将`x`的最后两个元素作为它们在`y`中的等效元素,因为`x> y`产生`[1] FALSE TRUE TRUE`,因此,你的算法声明`x`应该最终为`c(1, 1,1)`.你能解释一下为什么`y`(2)的第二个元素,它比`y`(1)中的元素2大,不应该用`y`的相应值替换,它是1? (2认同)