Hello,
Berend is right, it's at least confusing. To get just the index of the
maximum value in each column,
apply(mat, 2, which.max)
To get that index and the two neighbours (before and after, wraping
around) if they are greater than or equal to 80% of the maximum, try
fun <- function(x){
n <- length(x)
imx <- which.max(x)
sec <- numeric(2)
if(imx == 1){
if(x[n] >= 0.8*x[imx]) sec[1] <- n
if(x[2] >= 0.8*x[imx]) sec[2] <- 2
}else if(imx == n){
if(x[n - 1] >= 0.8*x[imx]) sec[1] <- n - 1
if(x[1] >= 0.8*x[imx]) sec[2] <- 1
}else{
if(x[imx - 1] >= 0.8*x[imx]) sec[1] <- imx - 1
if(x[imx + 1] >= 0.8*x[imx]) sec[2] <- imx + 1
}
sec <- sec[sec != 0]
c(imx, sec)
}
apply(mat, 2, fun)
Note that the result comes with the maximum first and the others follow.
Hope this helps,
Rui Barradas
Em 24-05-2013 11:41, eliza botto escreveu:
There you go!!!
structure(c(0.706461987893674, 0.998391468394261, 0.72402995269242,
1.70874688194537, 1.93906363083693, 0.89540353128442, 0.328327645695443,
0.427434603701202, 0.591932250254601, 0.444627635494183, 1.44407704434405,
1.79150336746345, 0.94525563730664, 1.1025988539757, 0.944726401770203,
0.941068515436361, 1.50874009152312, 0.590015480056925, 0.311905493999476,
0.596771673581893, 1.01502499067153, 0.803273181849135, 1.6704085033648,
1.57021117646422, 0.492096635764151, 0.433332688044914, 0.521585941816778,
1.66472272302545, 2.61878329527404, 2.19154489521664, 0.493876245329722,
0.4915787202584, 0.889477365620806, 0.609135860199222, 0.739201878930367,
0.854663750519518, 0.948228727226247, 1.38569091844218, 0.910510759802679,
1.25991218521949, 0.993123416952421, 0.553640392997634, 0.357487763503204,
0.368328033777003, 0.344255688489322, 0.423679560916755, 1.32093576037521,
3.13420679229785, 2.06195904001605, 1.41493262330451, 1.35748791897328,
1.19490680241894, 0.702488756183!
32!
2, 0.338258418490199, 0.123398398622741, 0.138548982660226, 0.16170889185798,
0.414543218677095, 1.84629295875002, 2.24547399004563, 0.0849732189580101,
0.070591276171845, 0.0926010253161898, 0.362209761457517, 1.45769283057202,
3.16165004659667, 2.74903557756267, 1.94633472878995, 1.19319875840883,
0.533232612926756, 0.225531074123974, 0.122949089115578), .Dim = c(12L, 6L))
Thanks once again..
Elisa
Subject: Re: [R] Continuous columns of matrix
From: b...@xs4all.nl
Date: Fri, 24 May 2013 12:36:47 +0200
CC: r-help@r-project.org
To: eliza_bo...@hotmail.com
On 24-05-2013, at 12:24, eliza botto <eliza_bo...@hotmail.com> wrote:
Dear useRs,If i have a matrix, say, 12 rows and 6 columns. The columns are
continuous. I want to find the index of maximum values and the actual maximum
values. The maximum values in each column are the highest values and the values
greater than or equal to 80% of the maximum value. Moreover, if a column has
more than one maximum values than these values should come immediately next to
each other. For example, if you column 1 has a highest value in 6th row then
the second maximum values cant be in row 5 or 7. And as the columns are
continuous therefore, if maximum value is in row 12th, then the second maximum
cant be in row 11 and 1.Thankyou very much indeed in advance
Incomprehensible.
What is a continuous column?
Please give an example input matrix and and the result you want.
Berend
Elisa
[[alternative HTML version deleted]]
Please post in plain text.
[[alternative HTML version deleted]]
______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.