В момента използвам набора от данни "диаманти" от пакета ggplot2. Искам да мога да преброя броя на диамантите, които отговарят на две условия в първите n наблюдения, в този случай цвят „E“ и чистота „SI2“. Написах функцията по-долу, която решава този проблем, но бих искал да мога да направя това, без да е необходимо да изпълнявам for цикъл. Има ли начин тази функция да работи без for цикъла? Наборът от данни съдържа 54 000 наблюдения.
library('ggplot2')
data(diamonds)
countfreq <- function(n) {
#Set k to 0
k <- 0
for(i in 1:n) {
if (diamonds$color[i] == 'E' & diamonds$clarity[i] == 'SI2')
k <- k + 1
}
return(k)
}
countfreq(50)
2
countfreq(100)
3
Първите два реда на рамката с данни са както по-долу.
carat cut color clarity depth table price x y z
1 0.23 Ideal E SI2 61.5 55.0 326 3.95 3.98 2.43
2 0.21 Premium E SI1 59.8 61.0 326 3.89 3.84 2.31
nrow(diamonds[diamonds$color == 'E' & diamonds$clarity == 'SI2',])
- person hrbrmstr   schedule 14.10.2017