R语言笔记——R循环二
本个专题将介绍R语言的一些基本技能和实用技巧。本教程说明了如何在R中编写循环。它通过几个示例对APPLY函数系列和FOR LOOP进行了说明,这些示例使编写R循环变得容易。
循环
循环可帮助您在不同的变量,不同的列或不同的数据集上重复类似的操作。例如,您想将每个变量乘以5。您可以循环执行此任务,而不必将每个变量一乘一。它的主要好处是减少了代码中的重复项,这有助于在代码的后面进行更改。
在R中编写循环的方法
1.对于循环
2. While循环
3. Apply系列功能,例如Apply,Lapply,Sapply等
应用函数族
它们是R中的隐藏循环。它们使循环更易于读写。但是与For Loop和While Loop相比,这些概念对于编程世界来说是非常新的。
Lapply 和 Sapply
在此示例中,我们将向您展示如何同时应用lapply和sapply来解决问题。
创建样本数据
dat <- data.frame(x = c(1:5,NA),
z = c(1, 1, 0, 0, NA,0),
y = factor(5*c(1:6)))
# x z y
# 1 1 1 5
# 2 2 1 10
# 3 3 0 15
# 4 4 0 20
# 5 5 NA 25
# 6 NA 0 30
将因子变量转换为数值
以下代码将数据框'dat'的所有因子变量转换为数值类型变量。
index <- sapply(dat, is.factor)
dat[index] <- lapply(dat[index], function(x) as.numeric(as.character(x)))
说明
1. 索引将返回TRUE / FALSE,无论变量是否为factor
2. 仅转换index = TRUE的那些变量。
ForLoop
像Apply系列函数一样,For Loop用于在多个数据元素或数据集上重复相同的任务。它与其他语言(例如VB,python等)中的FOR LOOP相似。这个概念并不是新概念,并且已经在编程领域中使用了很多年。
示例1:每列的最大值
x = NULL
for (i in 1:ncol(dat)){
x[i]= max(dat[i], na.rm = TRUE)}
x
# [1] 5 1 30
在开始循环之前,我们需要确保创建一个空向量。空向量由x = NULL定义。下一步是定义要执行循环的列数。它是通过ncol函数完成的。长度函数也可以用来知道列数。
上面的FOR LOOP程序可以像下面的代码一样编写-
"double", ncol(dat)) x = vector(
for (i in seq_along(dat)){
x[i]= max(dat[i], na.rm = TRUE)}
x
◆
◆
◆
◆
◆
◆