0

サイズの異なる 2 つのベクトルがあります。

  • vector1 = [1, 2, 3]
  • vector2 = [1, 2, 3, 4, 5]

それらの間で操作を行いたいです。vector1 の各数値と vector2 の各数値。そんな感じ:

ここに画像の説明を入力

fora の中で a をしようとして失敗しましたfor。何か助けはありますか?

vector1 <- data.frame(c(1, 2, 3))
vector2 <- data.frame(c(1, 2, 3, 4, 5))

for (i in vector1) {
  for (j in vector2) {
  a <- i + j
}
}

メッセージエラーです

Warning message:
In i + j : longer object length is not a multiple of shorter object length
4

2 に答える 2

2

使用できますouter

> vector1 <- c(1, 2, 3)
> vector2 <- c(1, 2, 3, 4, 5)
> outer(vector1, vector2, FUN="+")
     [,1] [,2] [,3] [,4] [,5]
[1,]    2    3    4    5    6
[2,]    3    4    5    6    7
[3,]    4    5    6    7    8

本当にループを使用したい場合は、ネストされたforループを使用できます。

> result <- matrix(0, nrow = length(vector1), ncol=length(vector2))
> for(i in seq_len(length(vector1))){
    for(j in seq_len(length(vector2))){
      result[i,j] <- sum(vector1[i], vector2[j])
    }
 }
> result
     [,1] [,2] [,3] [,4] [,5]
[1,]    2    3    4    5    6
[2,]    3    4    5    6    7
[3,]    4    5    6    7    8
于 2018-10-26T21:59:34.060 に答える