R 重复向向量添加数字并复制向量

R 重复向向量添加数字并复制向量,r,numbers,add,R,Numbers,Add,我有两个值 3和5 我做向量 num1 <- 3 num2 <- 12 a <- c(num1, num2) 重复编号“n”为6 我不知道。这里有两种基本R方法 使用outer,您可以 c(outer(c(3, 12), (12 * 0:4), "+")) [1] 3 12 15 24 27 36 39 48 51 60 或者使用sapply,您可以显式循环并计算成对的和 c(sapply(0:4, function(i) c(3, 12) + (12 * i)))

我有两个值 3和5

我做向量

num1 <- 3
num2 <- 12
a <- c(num1, num2)
重复编号“n”为6


我不知道。

这里有两种基本R方法

使用
outer
,您可以

c(outer(c(3, 12), (12 * 0:4), "+"))
 [1]  3 12 15 24 27 36 39 48 51 60
或者使用
sapply
,您可以显式循环并计算成对的和

c(sapply(0:4, function(i) c(3, 12) + (12 * i)))
 [1]  3 12 15 24 27 36 39 48 51 60

outer
返回一个矩阵,其中两个向量的每对元素都已相加
c
用于返回向量
sapply
循环0:4,然后计算元素总和。在这个例子中,它还返回一个矩阵,因此
c
用于返回一个向量。

这里有两个以R为基数的方法

使用
outer
,您可以

c(outer(c(3, 12), (12 * 0:4), "+"))
 [1]  3 12 15 24 27 36 39 48 51 60
或者使用
sapply
,您可以显式循环并计算成对的和

c(sapply(0:4, function(i) c(3, 12) + (12 * i)))
 [1]  3 12 15 24 27 36 39 48 51 60

outer
返回一个矩阵,其中两个向量的每对元素都已相加
c
用于返回向量
sapply
循环0:4,然后计算元素总和。在本例中,它还返回一个矩阵,因此
c
用于返回向量。

这里有一个稍微通用的函数,它将原始向量
a
、要添加的数字
12
n
作为输入

f1 <- function(vec, x, n){
  len1 <- length(vec)
  v1 <- sapply(seq(n/len1), function(i) x*i)
  v2 <- rep(v1, each = n/length(v1))
  v3 <- rep(vec, n/len1)
  return(c(vec, v3 + v2))
}

f1(a, 12, 6)
#[1]  3 12 15 24 27 36 39 48

f1(a, 11, 12)
#[1]  3 12 14 23 25 34 36 45 47 56 58 67 69 78

f1(a, 3, 2)
#[1]  3 12  6 15

这是一个有点通用的函数,它将原始向量
a
、要添加的数字
12
n
作为输入

f1 <- function(vec, x, n){
  len1 <- length(vec)
  v1 <- sapply(seq(n/len1), function(i) x*i)
  v2 <- rep(v1, each = n/length(v1))
  v3 <- rep(vec, n/len1)
  return(c(vec, v3 + v2))
}

f1(a, 12, 6)
#[1]  3 12 15 24 27 36 39 48

f1(a, 11, 12)
#[1]  3 12 14 23 25 34 36 45 47 56 58 67 69 78

f1(a, 3, 2)
#[1]  3 12  6 15

使用
rep
进行重复,使用
cumsum
进行添加:

n = 6
rep(a, n) + cumsum(rep(c(12, 0), n))
# [1] 15 24 27 36 39 48 51 60 63 72 75 84

使用
rep
进行重复,使用
cumsum
进行添加:

n = 6
rep(a, n) + cumsum(rep(c(12, 0), n))
# [1] 15 24 27 36 39 48 51 60 63 72 75 84