我是R的新手.有人可以告诉我以下代码中发生了什么.
a<- 1:10 b<-sapply(a, function(x) sapply(a,function(y) x+y)) b
为什么b看起来像这样:
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [1,] 2 3 4 5 6 7 8 9 10 11 [2,] 3 4 5 6 7 8 9 10 11 12 [3,] 4 5 6 7 8 9 10 11 12 13 [4,] 5 6 7 8 9 10 11 12 13 14 [5,] 6 7 8 9 10 11 12 13 14 15 [6,] 7 8 9 10 11 12 13 14 15 16 [7,] 8 9 10 11 12 13 14 15 16 17 [8,] 9 10 11 12 13 14 15 16 17 18 [9,] 10 11 12 13 14 15 16 17 18 19 [10,] 11 12 13 14 15 16 17 18 19 20
42-.. 6
当两个版本的a
-vector 的各个项到达内部表达式时,它们覆盖了前10个正整数的可能配对的范围.它与两个嵌套的for循环基本相同.sapply
如果可能,该函数将返回矩阵.内部sapply
返回一系列长度为10的向量,外部sapply
将向量组合成矩阵.您也可以使用以下命令返回相同的结果:
outer( 1:10, 1:10, "+")
我不同意Scriven这种形式是"胡说八道".如果有人使用该sum
功能,那么outer
策略就不会成功.该sum
函数不是"向量化的"(至少在R用户使用该函数的方式中),因为它通常不会返回与其参数长度相同的值.尽管如此,双重sapply
方法会给出与sum(x,y)
内在表达相同的结果,但是outer(a,a,'sum')
会失败.
当两个版本的a
-vector 的各个项到达内部表达式时,它们覆盖了前10个正整数的可能配对的范围.它与两个嵌套的for循环基本相同.sapply
如果可能,该函数将返回矩阵.内部sapply
返回一系列长度为10的向量,外部sapply
将向量组合成矩阵.您也可以使用以下命令返回相同的结果:
outer( 1:10, 1:10, "+")
我不同意Scriven这种形式是"胡说八道".如果有人使用该sum
功能,那么outer
策略就不会成功.该sum
函数不是"向量化的"(至少在R用户使用该函数的方式中),因为它通常不会返回与其参数长度相同的值.尽管如此,双重sapply
方法会给出与sum(x,y)
内在表达相同的结果,但是outer(a,a,'sum')
会失败.