如何在R中使用apply替代循环

22 浏览
0 Comments

如何在R中使用apply替代循环

这个问题已经有了答案:

统计向量中值为x的元素数量

这是一个关于应用apply的利用的问题。偶然已经回答了这种性质的问题。我不是在寻找最简单的方法(这将使它成为重复的问题)。我写了一个用循环解决的随机东西。我正在寻找如何使用apply编写我的问题。

在R中,我非常难以改掉总是使用循环的习惯。这是我写的一个基本示例脚本。它获取数据并指定表中每个唯一数字的频率。如果可能,我该如何使用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")

admin 更改状态以发布 2023年5月23日
0
0 Comments

我们可以使用 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)))

0