Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.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
当乐趣产生一个以上的价值时,有没有一种方法可以将'outer'用于两个向量_R_List_Matrix - Fatal编程技术网

当乐趣产生一个以上的价值时,有没有一种方法可以将'outer'用于两个向量

当乐趣产生一个以上的价值时,有没有一种方法可以将'outer'用于两个向量,r,list,matrix,R,List,Matrix,我有一个这样的函数 myfun <- function(x, y){ c(x, y, x+y, x*y) } vmyfun <- Vectorize(myfun) outer(1:10, 2:5,vmyfun) 我希望结果是一个有4个矩阵的列表 [[1]] [,1] [,2] [,3] [,4] [1,] 1 1 1 1 [2,] 2 2 2 2 [3,] 3 3 3 3 [4,

我有一个这样的函数

myfun <- function(x, y){
  c(x, y, x+y, x*y)
}
vmyfun <- Vectorize(myfun)

outer(1:10, 2:5,vmyfun)
我希望结果是一个有4个矩阵的列表

  [[1]]
      [,1] [,2] [,3] [,4]
 [1,]    1    1    1    1
 [2,]    2    2    2    2
 [3,]    3    3    3    3
 [4,]    4    4    4    4
 [5,]    5    5    5    5
 [6,]    6    6    6    6
 [7,]    7    7    7    7
 [8,]    8    8    8    8
 [9,]    9    9    9    9
[10,]   10   10   10   10

[[2]]
      [,1] [,2] [,3] [,4]
 [1,]    2    3    4    5
 [2,]    2    3    4    5
 [3,]    2    3    4    5
 [4,]    2    3    4    5
 [5,]    2    3    4    5
 [6,]    2    3    4    5
 [7,]    2    3    4    5
 [8,]    2    3    4    5
 [9,]    2    3    4    5
[10,]    2    3    4    5

[[3]]
      [,1] [,2] [,3] [,4]
 [1,]    3    4    5    6
 [2,]    4    5    6    7
 [3,]    5    6    7    8
 [4,]    6    7    8    9
 [5,]    7    8    9   10
 [6,]    8    9   10   11
 [7,]    9   10   11   12
 [8,]   10   11   12   13
 [9,]   11   12   13   14
[10,]   12   13   14   15

[[4]]
      [,1] [,2] [,3] [,4]
 [1,]    2    3    4    5
 [2,]    4    6    8   10
 [3,]    6    9   12   15
 [4,]    8   12   16   20
 [5,]   10   15   20   25
 [6,]   12   18   24   30
 [7,]   14   21   28   35
 [8,]   16   24   32   40
 [9,]   18   27   36   45
[10,]   20   30   40   50
有没有办法实现这一点?谢谢你们

更新: 我在这个问题上树立了一个坏榜样。我真正想要的比我提供的示例结果要复杂得多。 我不想更改函数
myfun
。这是一个新的例子。它是一个函数,用于获得不同阈值的mat之和

myfun2 <- function(x, y){
  mat <- matrix(data = rexp(x, rate = y), nrow = 10, ncol = 20)

  sapply(seq(from = 0, to = max(mat), length.out = 100), function(x){
    mat[mat < x] <- 0
    sum(mat)})
}


> myfun2(10,15)
  [1] 10.023527 10.023527 10.023527 10.023527 10.023527 10.023527 10.023527 10.023527  9.893362
 [10]  9.893362  9.893362  9.893362  9.893362  9.893362  9.893362  9.893362  9.893362  9.893362
 [19]  9.893362  9.893362  9.893362  9.893362  9.893362  9.893362  9.893362  9.893362  9.893362
 [28]  9.893362  9.893362  9.893362  9.353354  9.353354  9.353354  9.353354  9.353354  9.353354
 [37]  9.353354  9.353354  9.353354  9.353354  9.353354  9.353354  9.353354  8.563003  8.563003
 [46]  8.563003  8.563003  8.563003  8.563003  7.673577  7.673577  7.673577  6.729326  6.729326
 [55]  6.729326  6.729326  6.729326  6.729326  6.729326  6.729326  6.729326  6.729326  5.590193
 [64]  5.590193  5.590193  5.590193  4.385858  4.385858  4.385858  3.113081  1.828594  1.828594
 [73]  1.828594  1.828594  1.828594  1.828594  1.828594  1.828594  1.828594  1.828594  1.828594
 [82]  1.828594  1.828594  1.828594  1.828594  1.828594  1.828594  1.828594  1.828594  1.828594
 [91]  1.828594  1.828594  1.828594  1.828594  1.828594  1.828594  1.828594  1.828594  1.828594
[100]  1.828594

结果应该是100个矩阵的列表

外部
不支持这一点,但我们可以通过
lappy
实现这一点:

## function list `funlist`
funlist <- list(function(x, y) x, function(x, y) y, "+", "*")
## use `lapply`
lapply(funlist, FUN = function (fun) outer(1:10,2:5,fun))

跟进

我对R的知识相当有限。感谢@thelatemail的评论,我想我从今天开始学习使用
Map

Map(outer, list(1:10), list(2:5), funlist)

请告诉我-您也可以通过
Map(外部、列表(1:10)、列表(2:5)、funlist)指定它。
谢谢您的回答。但我不会将我的函数更改为函数列表。我已经更新了。
[[1]]
      [,1] [,2] [,3] [,4]
 [1,]    1    1    1    1
 [2,]    2    2    2    2
 [3,]    3    3    3    3
 [4,]    4    4    4    4
 [5,]    5    5    5    5
 [6,]    6    6    6    6
 [7,]    7    7    7    7
 [8,]    8    8    8    8
 [9,]    9    9    9    9
[10,]   10   10   10   10

[[2]]
      [,1] [,2] [,3] [,4]
 [1,]    2    3    4    5
 [2,]    2    3    4    5
 [3,]    2    3    4    5
 [4,]    2    3    4    5
 [5,]    2    3    4    5
 [6,]    2    3    4    5
 [7,]    2    3    4    5
 [8,]    2    3    4    5
 [9,]    2    3    4    5
[10,]    2    3    4    5

[[3]]
      [,1] [,2] [,3] [,4]
 [1,]    3    4    5    6
 [2,]    4    5    6    7
 [3,]    5    6    7    8
 [4,]    6    7    8    9
 [5,]    7    8    9   10
 [6,]    8    9   10   11
 [7,]    9   10   11   12
 [8,]   10   11   12   13
 [9,]   11   12   13   14
[10,]   12   13   14   15

[[4]]
      [,1] [,2] [,3] [,4]
 [1,]    2    3    4    5
 [2,]    4    6    8   10
 [3,]    6    9   12   15
 [4,]    8   12   16   20
 [5,]   10   15   20   25
 [6,]   12   18   24   30
 [7,]   14   21   28   35
 [8,]   16   24   32   40
 [9,]   18   27   36   45
[10,]   20   30   40   50
Map(outer, list(1:10), list(2:5), funlist)