2015-02-23 71 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