3

我有一个这样的data.frame:

data <- data.frame(A=c(1,3,5),B=c(4,3,6),C=c(2,2,8),D=c(3,3,4))

  A B C D 
  1 4 2 3 
  3 3 2 3 
  5 6 8 4 

现在我想创建新变量“E”,它是 A、B 和 C 列的最小值。因此 data.frame 现在看起来像这样:

 A B C D E
 1 4 2 3 1
 3 3 2 3 2
 5 6 8 4 5

我可以使用 for 循环来做到这一点:

for (i in 1:nrow(data)) {
  data$E[i] <- min(data[i,c("A","B","C")])
}

但我想知道这是否可以以不同的方式完成(更有效)?

非常感谢!

4

1 回答 1

6

这里有几种方法,使用apply(将min函数应用于每一行) 或pmin(parallel min)。

pmin( data[,1], data[,2], data[,3] )
# [1] 1 2 5
do.call( pmin, data[,1:3] )
# [1] 1 2 5
apply(data[,1:3], 1, min)
# [1] 1 2 5
于 2013-07-19T09:37:57.033 回答