2015-02-23 2 views
0

Я прошу прощения, если я задаю вопрос, если он уже был задан, но я не мог найти его ..максимальных значений для печати каждой пары колонок

AGE<-c(25, 37, 57, 72, 48, 28, 31, 57, 43, 38) 
LLS<-c(24, 1, 24, 24, 14, 21, 4, 12, 8, 1) 
RLS<-c(11, 1, 14, 21, 7, 21, 22, 8, 27, 12) 
dat <- data.frame(AGE, LLS, RLS) 

и хотят, чтобы получить максимальные значения столбец LLS И RLS для каждой строки.

Пожалуйста, расскажите, как это сделать? Спасибо.

ответ

2

Вы можете попробовать pmax

do.call(pmax, dat[-1]) 
#[1] 24 1 24 24 14 21 22 12 27 12 

Если для каждой пары столбцов, вы можете использовать combn

res <- combn(names(dat),2, FUN=function(x) do.call(pmax,dat[x])) 
colnames(res) <- apply(combn(names(dat),2),2, paste, collapse="_") 
2

Я считаю, что для каждой строки, вы хотите вернуть одно значение, какая из них больше RLS или LLS. Правильно?

Если это так, ответ Акруна хорош. В качестве альтернативы вы можете использовать удобную функцию rowMaxs() в пакете matrixStats. По-моему, это немного более прямолинейно, но это единственное реальное преимущество. Вот код, вы можете объединить в несколько шагов, но я написал его, чтобы было ясно, что происходит.

AGE<-c(25, 37, 57, 72, 48, 28, 31, 57, 43, 38) 
LLS<-c(24, 1, 24, 24, 14, 21, 4, 12, 8, 1) 
RLS<-c(11, 1, 14, 21, 7, 21, 22, 8, 27, 12) 
dat <- data.frame(AGE, LLS, RLS) 

Создайте подмножество вашего dataframe, включая только те столбцы, которые вы хотите

dat2 <- dat[,2:3]    

Включите новый dataframe в матрицу так rowMaxs() не жалуется

dat3 <- as.matrix(dat2) 

нагрузки таблица matrixStats и вызов rowMaxs()

library(matrixStats) 
rowMaxs(dat3) 

[1] 24 1 24 24 14 21 22 12 27 12