如何在 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)))
这是关于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)))