Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在R中为内部其他创建一个?_R_Loops_For Loop_Vector - Fatal编程技术网

如何在R中为内部其他创建一个?

如何在R中为内部其他创建一个?,r,loops,for-loop,vector,R,Loops,For Loop,Vector,我有两个不同大小的向量: 向量1=[1,2,3] 向量2=[1,2,3,4,5] 我想在他们之间做手术。矢量1中的每个数字加上矢量2中的每个数字。诸如此类: 我在一个for的内尝试了一个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

我有两个不同大小的向量:

  • 向量1=[1,2,3]
  • 向量2=[1,2,3,4,5]
我想在他们之间做手术。矢量1中的每个数字加上矢量2中的每个数字。诸如此类:

我在一个
for
内尝试了一个
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
}
}

您可以使用
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

您可以使用
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
是一种非常低效的方法。这里有一种使用base R的
sapply
的方法,尽管我觉得应该有更好的方法-

c(sapply(vector1, function(x) x + vector2))

# [1] 2 3 4 5 6 3 4 5 6 7 4 5 6 7 8

for
是一种非常低效的方法。这里有一种使用base R的
sapply
的方法,尽管我觉得应该有更好的方法-

c(sapply(vector1, function(x) x + vector2))

# [1] 2 3 4 5 6 3 4 5 6 7 4 5 6 7 8