首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >应用2个向量

应用2个向量
EN

Stack Overflow用户
提问于 2012-08-16 21:00:32
回答 2查看 294关注 0票数 2

假设我有两个列表

代码语言:javascript
复制
divisor = c(0, 1, 1, 7, 7, 8, 8, 8, 9 )
remainder = c(99,  0,  1,  1, 99,  0,  1, 99,  0)

如果除数元素的对应余数不是0,我希望它是元素+1。最后的答案应该是:

代码语言:javascript
复制
updated.divisor = (1, 1, 2, 8, 8, 8, 9, 9, 9)

我将如何使用sapply来完成这个任务?

到目前为止我已经

代码语言:javascript
复制
sapply(remainder, function(x) {
    if x != 0{
       #divisor = divisor + 1
    }
    else{
       #divisor = divisor + 0
    }
}

我可能需要一个嵌套循环,但我希望能够使用sapply来完成这个任务。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-16 23:36:47

对于您的评论:如果您想要一个应用类型解决方案,您可以使用mapply,因为它允许您处理两个参数:

代码语言:javascript
复制
mapply( function(x,y) {x + !(y==0)}, x=divisor, y=remainder)
#[1] 1 1 2 8 8 8 9 9 9

ifelse解决方案也是有意义的:

代码语言:javascript
复制
 ifelse(remainder !=0, divisor+1, divisor)
#[1] 1 1 2 8 8 8 9 9 9
票数 5
EN

Stack Overflow用户

发布于 2012-08-16 21:04:23

你不需要循环:

代码语言:javascript
复制
divisor + (remainder!=0)
[1] 1 1 2 8 8 8 9 9 9

这是R最基本的原则之一:所有基本操作(和许多函数)都接受向量作为输入,同时对向量的所有元素执行运算。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11995362

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档