-5

シーケンスを生成しようとしています

たとえば、以下に示すように::

> 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 から開始される場合、または生成されるシーケンスはその数の倍数である必要があります。

4

2 に答える 2

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)
于 2016-12-20T06:08:07.743 に答える
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

于 2016-12-20T07:29:53.493 に答える