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 - Fatal编程技术网

这个R表达式做什么?

这个R表达式做什么?,r,R,sp_full_in是矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 0 1 1 1 1 2 2 2 1 1 1 1 1 2 1 1 1 1 1 1 2 2 1 0 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 3 2 2 0 2 2 2 2 2 2 1 1 2 2 2 1 2 1 1 1 2 1 4 1 2

sp_full_in
是矩阵:

   1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
1  0 1 1 1 1 2 2 2 1  1  1  1  1  2  1  1  1  1  1  1  2
2  1 0 1 1 1 1 1 1 1  1  1  2  1  1  1  1  1  1  1  1  1
3  2 2 0 2 2 2 2 2 2  1  1  2  2  2  1  2  1  1  1  2  1
4  1 2 1 0 2 2 2 1 2  1  1  1  2  2  1  2  1  1  2  2  1
5  2 2 2 2 0 2 2 2 2  1  1  2  1  2  1  2  1  1  1  2  2
6  2 1 1 1 1 0 1 1 1  2  2  2  2  2  1  2  1  2  2  1  1
7  2 1 1 2 1 1 0 1 1  2  1  1  2  1  1  2  1  1  1  2  1
8  1 2 1 1 1 2 2 0 1  1  1  2  2  2  1  2  1  1  2  1  1
9  2 2 1 2 1 1 2 2 0  1  1  2  1  2  1  2  1  1  2  2  2
10 2 2 1 1 1 2 2 1 1  0  2  2  2  2  1  1  1  1  1  2  2
11 2 2 1 1 1 2 1 1 1  1  0  2  1  2  1  2  1  1  1  1  2
12 1 2 1 1 2 1 1 2 1  1  1  0  2  2  1  2  1  2  1  1  1
13 2 2 2 2 1 3 2 2 2  1  1  3  0  2  1  2  2  1  2  2  2
14 2 2 1 2 1 2 1 2 1  2  2  2  1  0  1  2  1  1  1  1  1
15 2 2 2 2 2 2 2 2 2  1  1  2  2  1  0  2  1  1  1  1  2
16 1 2 2 1 1 2 2 2 1  1  2  2  2  2  1  0  1  1  2  1  2
17 2 2 1 1 1 1 1 2 1  1  1  1  2  2  1  2  0  2  2  1  1
18 1 1 1 1 1 2 1 1 1  1  1  2  1  1  1  1  2  0  1  1  1
19 2 2 1 2 1 2 2 2 2  1  1  2  2  2  1  2  1  1  0  2  2
20 2 2 1 1 1 2 2 2 2  1  2  2  2  2  1  2  1  1  1  0  1
21 1 1 1 1 1 1 1 1 1  2  2  1  2  1  1  2  1  1  2  1  0

mean(sp_full_in[which(sp_full_in != Inf)])
生成结果
[1]1.38322

我不太确定我是否理解它的作用,但我阅读它的方式是:对于sp_full_in中的每个单元格,检查它是否是无限的,如果是,返回输出1,然后平均所有输出。对吗?如果没有,它应该如何准备?

(sp_full_in!=Inf)
返回整数向量(其中只有一个是1)。然后将该整数向量交给“[”,作为
sp_full_in
的索引,并将
sp_full_in
的所有值作为向量返回给
mean
函数

学习从“由内而外”读取R表达式是一个好主意。找到最里面的函数调用并在心里对其求值,在本例中为
sp_full_in!=Inf
,它返回传递给
which()的所有TRUE的逻辑矩阵由于没有'arr.ind'参数,它返回一个索引的原子向量。

其中(sp_full_in!=Inf)
返回一个整数向量(其中只有一个是1)。然后将该整数向量交给“[”as索引到
sp_full_in
中,并返回
sp_full_in
中的所有值,作为传递给
mean
函数的向量


学习从“由内而外”读取R表达式是一个好主意。找到最里面的函数调用并在心里对其求值,在本例中为
sp_full_in!=Inf
,它返回传递给
which()的所有TRUE的逻辑矩阵
,由于没有'arr.ind'参数,它返回一个索引的原子向量。

否,但当它应用于矩阵时,它会根据条件检查矩阵的每个单元格,这里不是Inf。返回满足条件的所有单元格的索引,然后根据代码输出单元格的值根据返回的索引并最终计算这些索引的平均值。

否,但您很接近,当它应用于矩阵时,它会根据条件检查矩阵的每个单元格,这里不是Inf。返回满足条件的所有单元格的索引,然后根据您的代码,根据ret输出单元格的值翻转索引并最终计算它们的平均值。

其他答案很好地解释了为什么要得到矩阵中所有有限项的平均值,但值得注意的是,在这种情况下,
哪个
什么都不做。我过去也有过度使用
哪个
的坏习惯

> a <- matrix(rnorm(4), nrow = 2)
> a
           [,1]       [,2]
[1,]  0.5049551 -0.7844590
[2,] -1.7170087 -0.8509076
> a[which(a != Inf)]
[1]  0.5049551 -1.7170087 -0.7844590 -0.8509076
> a[a != Inf]
[1]  0.5049551 -1.7170087 -0.7844590 -0.8509076
> a[1] <- Inf
> a
          [,1]       [,2]
[1,]       Inf -0.7844590
[2,] -1.717009 -0.8509076
> a[which(a != Inf)]
[1] -1.7170087 -0.7844590 -0.8509076
## Similarly if there was an Infinite value
> a[a != Inf]
[1] -1.7170087 -0.7844590 -0.8509076
>a
[,1]       [,2]
[1,]  0.5049551 -0.7844590
[2,] -1.7170087 -0.8509076
>a[哪个(a!=Inf)]
[1]  0.5049551 -1.7170087 -0.7844590 -0.8509076
>a[a!=Inf]
[1]  0.5049551 -1.7170087 -0.7844590 -0.8509076
>a[1]a
[,1]       [,2]
[1,]Inf-0.7844590
[2,] -1.717009 -0.8509076
>a[哪个(a!=Inf)]
[1] -1.7170087 -0.7844590 -0.8509076
##同样,如果有一个无穷大的值
>a[a!=Inf]
[1] -1.7170087 -0.7844590 -0.8509076

而且,当我们讨论它时,我们还应该提到函数
is.finite
,它通常比
!=Inf
is更可取。finite
将在
Inf
-Inf
NA
NaN

上返回
FALSE
,其他答案很好地解释了为什么你会得到所有f的平均值初始化矩阵中的条目,但值得注意的是,在这种情况下,
which
什么都不做。我过去也有过度使用
which
的坏习惯

> a <- matrix(rnorm(4), nrow = 2)
> a
           [,1]       [,2]
[1,]  0.5049551 -0.7844590
[2,] -1.7170087 -0.8509076
> a[which(a != Inf)]
[1]  0.5049551 -1.7170087 -0.7844590 -0.8509076
> a[a != Inf]
[1]  0.5049551 -1.7170087 -0.7844590 -0.8509076
> a[1] <- Inf
> a
          [,1]       [,2]
[1,]       Inf -0.7844590
[2,] -1.717009 -0.8509076
> a[which(a != Inf)]
[1] -1.7170087 -0.7844590 -0.8509076
## Similarly if there was an Infinite value
> a[a != Inf]
[1] -1.7170087 -0.7844590 -0.8509076
>a
[,1]       [,2]
[1,]  0.5049551 -0.7844590
[2,] -1.7170087 -0.8509076
>a[哪个(a!=Inf)]
[1]  0.5049551 -1.7170087 -0.7844590 -0.8509076
>a[a!=Inf]
[1]  0.5049551 -1.7170087 -0.7844590 -0.8509076
>a[1]a
[,1]       [,2]
[1,]Inf-0.7844590
[2,] -1.717009 -0.8509076
>a[哪个(a!=Inf)]
[1] -1.7170087 -0.7844590 -0.8509076
##同样,如果有一个无穷大的值
>a[a!=Inf]
[1] -1.7170087 -0.7844590 -0.8509076

而且,当我们讨论它时,我们还应该提到函数
is.finite
,它通常比
!=Inf
is更可取。finite
将在
Inf
上返回
FALSE
-Inf
NA
计算所有非Inf值的平均值。换句话说,它是查找所有非Inf值并计算其平均值。它计算所有非Inf值的平均值。换句话说,它查找所有非Inf值并计算其平均值。谁说“不,但你很接近”参考?这是一种模糊的通信方式,在一个基于投票重新配置自身的线程中。好的,“它”将为您提供索引。根据索引,您可以检索值并获得其平均值。“不,但您很接近”是指谁?这是一种模糊的通信方式,在一个基于投票重新配置自身的线程中。好的,“which”将为您提供索引。根据索引,您可以检索值并获得其平均值。