R: Как создать k подмножеств, подчиняющихся условию, применяемому к k столбцам?


Пример:

fdistr[ which(fdistm[,4]<=5),]
        zip      long      lat 1   2     3  4   5
32403 72756 -94.07141 36.34224 3 122 19401 51 704
32404 72757 -94.11565 36.37198 2 141 19546 45 740
32405 72758 -94.14622 36.30662 1 149 19578 30 724

fdistr[ which(fdistm[,5]<=5),]
        zip      long      lat   1 2     3   4   5
32312 72601 -93.09345 36.23698 181 1 16548 328 354


fdistr[ which(fdistm[,6]<=5),]
        zip      long      lat     1     2 3     4     5
13271 30529 -83.46842 34.21042 16867 15514 1 17241 12593

Как сделать цикл по k столбцам, чтобы создать k подмножеств?

Спасибо!

2   3   2013-07-03 04:11:32

2 ответа:

Используйте lapply следующим образом:

k <- 5
subsets <- lapply(3 + 1:k, function(x, i, m) x[x[, i] <= m, ], x = fdistm, m = 5)

Он вернет список подмножеств k.

Используйте apply и предположим, что ваш фрейм данных является fdistm (не протестирован)

fdistm[apply(fdistm[, -1], MARGIN = 1, function(x) all(x <=5)), ]

Примечание: применяется ко всем, кроме первого