gpt4 book ai didi

r - 为什么 R 的应用函数会将行与列混淆?

转载 作者:行者123 更新时间:2023-12-04 10:48:15 25 4
gpt4 key购买 nike

以下代码:

set.seed(0)
m<-matrix(data=runif(6),nrow=2)

apply(m,1,print)
apply(m,1,function(x) print(x) )

给出:
[1] 0.8966972 0.3721239 0.9082078
[1] 0.2655087 0.5728534 0.2016819
[,1] [,2]
[1,] 0.8966972 0.2655087
[2,] 0.3721239 0.5728534
[3,] 0.9082078 0.2016819

因此,一次打印按行执行,另一次按列执行。为什么?根据我的理解,对 apply/print 的两个调用都应该做完全相同的事情。

最佳答案

这里有两点需要区分:什么print打印,以及它返回的内容。print数值向量的方法会将向量的内容打印到屏幕上。这是您得到的输出的第一部分:

[1] 0.8966972 0.3721239 0.9082078
[1] 0.2655087 0.5728534 0.2016819
在这里,第一行是矩阵第 1 行的打印输出,第二行是第 2 行的打印输出。
除此之外, print方法是一个函数,就像任何其他函数一样;它返回一个值。它返回的值是(对于默认方法)传递给它的值。这个返回值被传递回 apply ,作为一系列向量。 apply然后将这些向量连接成一个矩阵:
          [,1]      [,2]
[1,] 0.8966972 0.2655087
[2,] 0.3721239 0.5728534
[3,] 0.9082078 0.2016819
为什么将向量视为列向量?因为这就是 apply做。来自 ?apply :

Value

If each call to FUN returns a vector of length n, then apply returns an array of dimension c(n, dim(X)[MARGIN]) if n > 1. If n equals 1, apply returns a vector if MARGIN has length 1 and an array of dimension dim(X)[MARGIN] otherwise.

关于r - 为什么 R 的应用函数会将行与列混淆?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43510907/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com