如何从给定序列生成序列

时间:2016-12-20 06:01:57

标签: r sequence-generators

我正在尝试生成一个序列

示例如下所示::

> s
[1]  1  5  7 10 

>s.Generated_Seq 
[1]  1 2 9 10 13 14 19 20 

> s
[1]  2 5 7 10 

>s.Generated_Seq 
[1]  3 4 9 10 13 14 19 20 

注意:当序列从1开始时,其生成的序列应仅从1开始 如果序列从2或6或15开始,或任何数字生成的序列应该是该数字的倍数。

2 个答案:

答案 0 :(得分:3)

我们可以创建一个函数,它将vector作为输入参数,并根据描述的逻辑返回转换后的输出

f1 <- function(vec){
  if(vec[1]==1) {  #if the first element is 1
   #append the first element with the twice multiplied other elements
      c(vec[1], 2*vec[-1]) 
   #or else just multiply the vector with the first element
  } else vec*vec[1]
 }

f1(v1)
#[1]  1 10 14 20

f1(v2)
#[1]  4 10 14 20

数据

v1 <- c(1, 5, 7, 10)
v2 <- c(2, 5, 7, 10)

答案 1 :(得分:0)

v1 <- c(1, 5, 7, 10)
v2 <- c(2, 5, 7, 10)

ifelse(rep(v1[1],length(v1))==1,c(v1[1],2*v1[-1]), 2*v1)
# [1]  1 10 14 20

ifelse(rep(v2[1],length(v2))==1,c(v2[1],2*v2[-1]), 2*v2)
# [1]  4 10 14 20

执行rep(v2[1],length(v2))而不是仅执行v2[1]==1的原因是ifelse返回的值与'test'的长度相同。所以我们基本上做了与矢量长度相同的测试次数,这样我们就可以从ifelse

返回完整的矢量