如何区分变量的位置和值?

时间:2018-04-19 10:13:27

标签: r which

我正在搜索csv文件中特定行范围内的最大值。 我想出了范围,但现在我想确定最大值,它只显示该特定值的位置而不是实际值。

初步情况如下:

我读了文件

A <- read.csv(file=data[1], header=TRUE, sep=";")

接下来我确定调查范围

Duration = as.character (A [16,1])
Duration = as.numeric(strsplit(Duration," ") [[1]][2])

B<- A[which(A==28447)]

所以这些是目标行:

[943] 0.0                                                                                     
[944] 1.8771                                                                                  
[945] 1.2928                                                                                  
[946] 1.7946                                                                                  
[947] 2.3201                                                                                  
[948] 1.8459                                                                                  
[949] 1.5889                                                                                  
[950] 1.3549                                                                                  
[951] 1.2376                                                                                  
[952] 1.1296                                                                                  
[953] 1.0619                                                                                  
[954] 1.0132                                                                                  
[955] 0.9684                                                                                  
[956] 0.93                                                                                    
[957] 0.8976

现在我做的是:

A[(B+1):(B+Duration),1]

透露:

    [1] 0.0    1.8771 1.2928 1.7946 2.3201 1.8459 1.5889 1.3549 1.2376 1.1296 1.0619 1.0132 0.9684 0.93   0.8976
24582 Levels: -0.0 -0.001 -0.0011 -0.0012 -0.0014 -0.0016 -0.0017 -0.0018 -0.0019 -0.0022 -0.0024 -0.0026 -0.0028 -0.003 -0.0033 ... Timesteps: 15

如果我现在去找max((B+1):(B+Duration),1)我得到:

957

如何避免这种情况?

非常感谢您的帮助。

欢呼声 奥利

2 个答案:

答案 0 :(得分:3)

which.max适当 1 返回索引。您只需要max

R函数名称中的

1 which通常是指索引。例如,which(A[, 1] > 2)将返回大于2的所有元素的索引。

答案 1 :(得分:1)

> A <- rnorm(10,0,1) > A [1] -1.05831869 -0.20686273 -0.81552863 -0.47213498 0.87199615 0.06288441 0.94777881 0.46776767 1.91153029 [10] -0.59206801 > > which.max(A) [1] 9 返回向量中最大值的位置:

> A[which.max(A)]
[1] 1.91153

因此,为了说明这一点,您可以使用它来索引最大值:

max

更简单的是> max(A) [1] 1.91153 > 函数!

{{1}}

如果你因为因素错误而没有意义,则需要先转换为数字。 How to convert a factor to integer\numeric without loss of information?