vlambda博客
学习文章列表

R语言笔记——R循环二




      本个专题将介绍R语言的一些基本技能和实用技巧。本教程说明了如何在R中编写循环。它通过几个示例对APPLY函数系列和FOR LOOP进行了说明,这些示例使编写R循环变得容易。





循环

    

循环可帮助您在不同的变量,不同的列或不同的数据集上重复类似的操作。例如,您想将每个变量乘以5。您可以循环执行此任务,而不必将每个变量一乘一。它的主要好处是减少了代码中的重复项,这有助于在代码的后面进行更改。




R中编写循环的方法

1.对于循环

2. While循环

3. Apply系列功能,例如ApplyLapplySapply



应用函数族

    它们是R中的隐藏循环。它们使循环更易于读写。但是与For LoopWhile Loop相比,这些概念对于编程世界来说是非常新的。




Lapply Sapply

      在此示例中,我们将向您展示如何同时应用lapplysapply来解决问题。

 

创建样本数据



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(xas.numeric(as.character(x)))


说明

1. 索引将返回TRUE / FALSE,无论变量是否为factor

2. 仅转换index = TRUE的那些变量。



ForLoop

      Apply系列函数一样,For Loop用于在多个数据元素或数据集上重复相同的任务。它与其他语言(例如VBpython等)中的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程序可以像下面的代码一样编写-



> x = vector("double", ncol(dat))> for (i in seq_along(dat)){ x[i]= max(dat[i], na.rm = TRUE)}> x