Я хотел бы добавить каждый элемент в одном векторе с каждым элементом в другом векторе следующим образом: , но избегать циклов for. Есть ли простой метод?
vadd <- function(vrow, vcol){ vmatrix <- matrix(nrow = length(vrow), ncol = length(vcol)) for(r in 1:length(vrow)){#rows for(c in 1:length(vcol)){#columns vmatrix[r, c] <- vrow[r] + vcol[c] } } return(vmatrix) } a <- c(1:10) b <- c(3:4) vadd(a, b)
С уважением, Brian
То, что вы ищете, это outer(), например:
outer()
> outer(a, b, "+") [,1] [,2] [1,] 4 5 [2,] 5 6 [3,] 6 7 [4,] 7 8 [5,] 8 9 [6,] 9 10 [7,] 10 11 [8,] 11 12 [9,] 12 13 [10,] 13 14
Вот одна вещь, которую вы можете сделать:
a<-c(1:10) b<-c(3:4) matrix(b,length(a),2,byrow=TRUE)+a
Вы можете поместить b в матрицу и воспользоваться правилами переработки R:
b
a + matrix(b, nrow=length(a), ncol=2, byrow=TRUE)