如何从给定序列生成序列
How to generate a Sequence From a Given sequence
我正在尝试生成序列
例如下图::
> 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 或任何数字开始,生成的序列应该是该数字的倍数。
我们可以创建一个函数,将 vector
作为输入参数,returns 根据描述的逻辑转换后的输出
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)
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
return 是一个与“test”长度相同的值。所以我们基本上进行与向量长度相同的测试次数,这样我们就可以 return 来自 ifelse
的完整向量
我正在尝试生成序列
例如下图::
> 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 或任何数字开始,生成的序列应该是该数字的倍数。
我们可以创建一个函数,将 vector
作为输入参数,returns 根据描述的逻辑转换后的输出
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)
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
return 是一个与“test”长度相同的值。所以我们基本上进行与向量长度相同的测试次数,这样我们就可以 return 来自 ifelse