R中的sapply - 如何在没有循环的情况下解决这个问题

时间:2017-04-06 05:23:28

标签: r lapply sapply mapply

如何使用sapply?我的数据框中有400k记录。需要在不使用for循环的情况下将数据填充到b $ a1。

b <- a
b[1:100,]
for (i in 1:nrow(b)) {
    if (b`$`x[i] > mean(b`$`x) &
        b`$`y[i] > mean(b`$`y) &
        b`$`z[i] < mean(b`$`z))
    {
        b`$`a1[i] = '1'
    }
    else {
        b`$`a1[i] = '0'
    }
}
head(b)

1 个答案:

答案 0 :(得分:2)

我认为你可以在这里使用ifelse()

b$a1 <- ifelse(b$x > mean(b$x) & b$y > mean(b$y) & b$z > mean(b$z), 1, 0)

Akrun的更新:

b$a1 <- as.integer(b$x > mean(b$x) & b$y > mean(b$y) & b$z > mean(b$z))