R使用apply避免使用for循环

时间:2016-11-24 14:42:26

标签: r for-loop apply

我有这样的问题。我使用这种声明来管理它但速度慢了。我可以使用apply函数来提高性能吗?

x<-matrix(sample(1:100,40),20,2)
x<-as.data.frame(x)
for ( i in 1:nrow(x))
{
  if ( x[i,1]>x[i,2] ){
    x[i,3]<-1
  } else {
    x[i,3]<-0
  }
}

1 个答案:

答案 0 :(得分:2)

您不需要显式或隐式循环;只需使用ifelse

x[, 3] <- ifelse(x[, 1] > x[, 2], 1, 0)

事实上,您可以进一步简化这一过程:

x[, 3] <- x[, 1] > x[, 2]

这将创建一个逻辑而非数字的列,但对于大多数目的而言,它足够接近。如果没有,您可以将逻辑转换回数字:

x[, 3] <- as.numeric(x[, 1] > x[, 2])