49

ベクトルの作成について質問があります。私がそうする場合a <- 1:10、「a」の値は1、2、3、4、5、6、7、8、9、10になります。

私の質問は、要素間に特定の間隔を置いてベクトルをどのように作成するかです。たとえば、1から100までの値を持つが、5の間隔でのみカウントされるベクトルを作成して、値が5,10,15,20、...、95,100のベクトルを取得したいとします。

Matlabではできると思いますが、1:5:100Rを使用してこれを行うにはどうすればよいですか?

やってみること5*(1:20)ができますが、もっと短い方法はありますか?(この場合、全長(100)を知ってから、間隔(5)のサイズで割って20を取得する必要があるため)

4

3 に答える 3

98

Rでは、同等の関数はseqであり、オプションで使用できますby

seq(from = 5, to = 100, by = 5)
# [1]   5  10  15  20  25  30  35  40  45  50  55  60  65  70  75  80  85  90  95 100

に加えて、やbyなどの他のオプションもあります。length.outalong.with

length.out:0から1までの合計10個の数値を取得する場合、次に例を示します。

seq(0, 1, length.out = 10)
# gives 10 equally spaced numbers from 0 to 1

along.with:入力として指定したベクトルの長さを取り、1:length(input)からのベクトルを提供します。

seq(along.with=c(10,20,30))
# [1] 1 2 3

along.withただし、この場合は、オプションを使用する代わりに使用することをお勧めしますseq_along。のドキュメントから?seq

seqは汎用であり、ここではデフォルトの方法のみを説明します。引数名に関係なく、最初の引数のクラスにディスパッチすることに注意してください。これは、これを一緒に解釈することを意図した1つの引数だけで呼び出された場合、意図しない結果をもたらす可能性がありますseq_along。その場合は、使用する方がはるかに優れています。

seq_along:代わりにseq(along.with(.))

seq_along(c(10,20,30))
# [1] 1 2 3

お役に立てれば。

于 2013-03-24T17:25:27.870 に答える
5

コードを使用する

x = seq(0,100,5) #this means (starting number, ending number, interval)

出力は次のようになります

[1]   0   5  10  15  20  25  30  35  40  45  50  55  60  65  70  75
[17]  80  85  90  95 100
于 2018-05-11T14:42:50.013 に答える
1

通常、ベクトルをいくつかの間隔に分割します。この場合、(a)がベクトルで、(b)が区間の数である関数を使用できます。(4つの間隔が必要だとしましょう)

a <- 1:10
b <- 4

FunctionIntervalM <- function(a,b) {
  seq(from=min(a), to = max(a), by = (max(a)-min(a))/b)
}

FunctionIntervalM(a,b)
# 1.00  3.25  5.50  7.75 10.00

したがって、4つの間隔があります。

1.00 - 3.25 
3.25 - 5.50
5.50 - 7.75
7.75 - 10.00

カット機能も使用できます

  cut(a, 4)

# (0.991,3.25] (0.991,3.25] (0.991,3.25] (3.25,5.5]   (3.25,5.5]   (5.5,7.75]  
# (5.5,7.75]   (7.75,10]    (7.75,10]    (7.75,10]   
#Levels: (0.991,3.25] (3.25,5.5] (5.5,7.75] (7.75,10]
于 2018-11-07T06:00:20.293 に答える