R乘以向量的非零元素

时间:2015-08-10 23:12:49

标签: r

所以我是R的新手,并对我获得的任务有疑问。我被要求生成一个函数,通过“拆分”当前值并将所有非零数字的乘积加到前一个值(即x1 = 1032,x2 = 1032 +(1)()来生成序列中的下一个值的函数( 3)(2)= 1038)。这是我到目前为止的代码:

ListView

这成功地将数字拆分为向量,如split(1032)= 1 0 3 2,我知道一旦我摆脱了0,下一步是R中的简单prod(x)命令,但是我不能为我的生活弄清楚如何把零踢出去。非常感谢任何帮助!

2 个答案:

答案 0 :(得分:0)

在控制台中输入您可能需要的组件的帮助页面:?"=="?"["

也许是一个让你入门的小贴士:

nums <- 1:10
nums2 <- nums[nums!=5]

请注意!翻转逻辑语句。试试!TRUE!FALSE

在我看来,你正在努力解决这个问题。如果您需要以数字生成该序列的下一个X步骤,则可能需要for循环(?"for")。

答案 1 :(得分:0)

看起来你解决了它。因此,对于比较学习,以下是其他用户可能接近它的方式:

seq2 <- function(start, n=1) { res <- numeric(n) 
  nxt <- function(x) {z <- strtoi(strsplit(toString(x),'')[[1]]);x+prod(z[!!z])}
  for(i in 1:n) res[i] <- ifelse(i==1,nxt(start),nxt(res[i-1]));res}

测试:

seq2(1032)
[1] 1038
seq2(1032, 5)
[1] 1038 1062 1074 1102 1104