2015-02-23 112 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) 

,並希望得到的最大值對於每行,列LLSRLS

請你能告訴我該怎麼做嗎? 謝謝。

回答

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。對?

如果是這樣,Akrun的答案是好的。或者,您可以使用matrixStats包中的方便的rowMaxs()函數。在我看來,這是一個更直接一點,但這是唯一的真正優勢。 這裏是代碼,你可以合併成更少的步驟,但我寫出來明確發生了什麼。

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) 

創建您的數據幀的一個子集,包括只想要

dat2 <- dat[,2:3]    

打開新的數據框成矩陣,從而rowMaxs()不抱怨

dat3 <- as.matrix(dat2) 

載列matrixStats包和調用rowMaxs()

library(matrixStats) 
rowMaxs(dat3) 

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