如何在 R 中使用应用而不是循环

How to use apply instead of loops in R

这是关于apply使用的问题。回答这种性质的问题纯属巧合。我不是在寻找最简单的方法(这会使它重复)。我写了一些随机的东西,可以用循环来解决。我正在寻找如何使用 apply 编写我的问题。

在 R 中,我很难改掉总是使用循环的习惯。这是我写的一个基本示例脚本。它获取数据并说明 table.How 中每个唯一数字的频率,如果可能的话,我可以用 apply 完成同样的事情吗?

x <- c(1,3,4,7,8,10,1,2,3,4,4,6,7,8,8,1,2,3,7,8)
y <- data.frame(x)
z <- data.frame(unique(y)) #finds unique values
i <- nrow(z) #nrow for loop length

id <- 1:i
repped <- data.frame()
for (i in id){
    zz <- y[which(y[,1] == z[i,]),] #takes each value from z and finds rows with identical values
value <- length(zz)
repped <- rbind(repped, value)
}

yy <- data.frame(z, repped)
colnames(yy) <- c("number", "frequency")

我们可以用table得到'y'的频率,用data.frame

包起来
 as.data.frame(table(y))

如果我们需要apply家庭功能

data.frame(z=unique(y$x),repped= sapply(unique(y$x), 
       function(i) sum(y$x==i)))