基于R语言for循环的替换方案

R语言中,for循环运行比较慢

for(i in 1:1000){
print(i^2)
}

补充:R语言:for循环使用小结

基本结构展示:

vals =c(5,6,7)
for(v in vals){
  print(v)
}
#即把大括号里的内容对vals里的每一个值都循环run一遍

实例展示:

1. paste() 命令是把几个字符连接起来

如paste("A","B","C",sep=" ")得到的就是“A B C”,在次基础上写如下for loop:

partnumber = c(1,2,5,78)
for(i in partnumber){
 print(paste("participant number",i, sep = " "))
}
#就可以得到一串参与者号码,根据上面给定的几个值, 从"participant number 1" 到"participant number 8" 

2. 双重loop

partnumber = c(1,2,5,78)
institution =c("cancer center", "RMH", "Florey")
for(i in partnumber){
  for(j in institution){
  print(paste("participant number",i,", institution",j,sep = " "))
}
}
# 先对j循环,后对i循环,得到如下结果
[1] "participant number 1 , institution cancer center"
[1] "participant number 1 , institution RMH"
[1] "participant number 1 , institution Florey"
[1] "participant number 2 , institution cancer center"
[1] "participant number 2 , institution RMH"
[1] "participant number 2 , institution Florey"
[1] "participant number 5 , institution cancer center"
[1] "participant number 5 , institution RMH"
[1] "participant number 5 , institution Florey"
[1] "participant number 78 , institution cancer center"
[1] "participant number 78 , institution RMH"
[1] "participant number 78 , institution Florey"
# 两个loop的话,output得放最中心的loop里面,如果只要要第一层loop,就放在靠外一层括号里面,第二层括号就保留最后的一个值

3. 数据库实例演示

Titanic=read.csv("https://goo.gl/4Gqsnz")  #从网络读取数据<0.2, 0.2-0.6还是>0.6。

目的:看不同舱位(Pclass)和不同性别(Sex)的人的生存率是

A<- sort(unique(Pclass))   #sort可以把类别按大小顺序排,unique()命令是把分类变量的种类提取出来
B<- sort(unique(Sex))
for(i in A){
  for(j in B){
   if(mean(Survived[Pclass==i&Sex==j])<0.2){
    print(paste("for class",i,"sex",j,"mean survival is less than 0.2"))
  } else if (mean(Survived[Pclass==i&Sex==j])>0.6){
    print(paste("for class",i,"sex",j,"mean survival is more than 0.6"))
  } else {
    print(paste("for class",i,"sex",j,"mean survival is between 0.2 and 0.6"))}
  }
}

结果如下:

[1] "for class 1 sex female mean survival is more than 0.6"

[1] "for class 1 sex male mean survival is between 0.2 and 0.6"

[1] "for class 2 sex female mean survival is more than 0.6"

[1] "for class 2 sex male mean survival is less than 0.2"

[1] "for class 3 sex female mean survival is between 0.2 and 0.6"

[1] "for class 3 sex male mean survival is less than 0.2"

补充:R语言for循环批量生成变量,并且赋值

看代码~

rm(list=ls())
data <- read.table("MS_identified_information.txt",header = T,sep = "\t",quote="",na.strings = "",row.names = 1,comment.char = "")
name1 <- paste("H1299",sep = "_",c(1:3))
name2 <- paste("Metf",sep = "_",c(1:3))
name3 <- paste("OEMetf",sep = "_",c(1:3))
name <- data.frame(name1,name2,name3)
mean.data=data.frame(row.names(data))
for (i in 1:3){
  tmp <- subset(data,select = as.vector.factor(name[,i])) #筛选特定的样本
  mean_ <- as.data.frame(apply(tmp, 1, mean)) #行求平均值
  //assign()功能就是对变量进行赋值如i=1时,df1=mean_
  //把三次结果组合起来
  mean.data <- cbind.data.frame(mean.data,assign(paste("df", i, sep=""), mean_))
  //这里没有体现出变量,实际上生成了df1,df2,df3结果
}
colnames(mean.data) <- c("ID","H1299","Metf","OEMetf")
write.table(mean.data,file="MS_mean.xls",row.names = FALSE,sep = "\t",na="")

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。

(0)

相关推荐

  • R语言wilcoxon秩和检验及wilcoxon符号秩检验的操作

    说明 wilcoxon秩和及wilcoxon符号秩检验是对原假设的非参数检验,在不需要假设两个样本空间都为正态分布的情况下,测试它们的分布是否完全相同. 操作 #利用mtcars数据 library(stats) data("mtcars") boxplot(mtcars$mpg~mtcars$am,ylab='mpg',names = c('automatic','manual)) #执行wilcoxon秩和检验验证自动档手动档数据分布是否一致 wilcox.test(mpg~am,

  • R语言-如何给直方图加标签

    看代码吧~ hist(data$MEDV,col="grey")#可以看到目标数据的总体分布 legend(35,170,c("min:5","median:21.2","mean:22.51","max:50"),fill=c("lightblue","wheat")) 补充:R语言作图--histogram(直方图) 最近小仙同学很是烦恼,本以为自己已经掌握了gg

  • R语言 实现选取某一行的最大值

    可以先自定义函数 也可以用的时候再定义. > mat <- matrix(c(1:3,7:9,4:6), byrow = T, nc = 3) > mat [,1] [,2] [,3] [1,] 1 2 3 [2,] 7 8 9 [3,] 4 5 6 > apply(mat, 2, function(x){order(x, decreasing=T)[1]}) # 查找每一列 [1] 2 2 2 > apply(mat, 1, function(x){order(x, dec

  • R语言-绘制双坐标图直方图与折线的结合方式

    看代码吧~ par(mar = c(5, 5, 3, 4)+0.1) #似乎是设置图片位置 bar<-barplot(gu[1:22,6],xlim=c(0.5,26),ylim=c(0,200000),ylab="交易量", col="blue",col.axis="blue",col.lab="blue") mtext(c(1:22),side=1,line=1,at=bar,cex=0.8,col="bl

  • R语言—自定义函数求置信区间的操作

    看代码吧~ #求单正态均值mu的置信区间 #参数依次为置信水平alpha,正态样本x,已知总体方差(默认为未知) mu <- function(alpha,x,sigma=NA){ n <- length(x) meanx <- mean(x) if(is.na(sigma)){ t1 <- qt(1-alpha/2,n-1) t2 <- qt(1-alpha,n-1) mu11 <- meanx - t1*sqrt(sum((x-meanx)^2)/(n-1))/sq

  • R语言-如何实现卡方检验

    卡方检验 在数据统计中,卡方检验是一种很重要的方法. 通常卡方检验的应用主要为: 1. 卡方拟合优度检验 2.卡方独立性检验 本文主要通过使用自己编程的方法实现相关检验. 卡方拟合优度检验 理论: 1.我们先做出0假设:H0:总体服从假定的理论分布 2.我们再构造一个统计量: 3.当n充分大时 4.我们得到该拒绝域 代码 #Chi_square Goodness Of Fit Test #函数说明: #n为所得样本数据:p为理论概率 #alpha为置信水平,df为自由度 cgoft <- fun

  • R语言-在一张图上显示多条线的实现

    查询百度之后,发现在R上一次显示多张图的函数很多,比如layout()或者分屏函数,但是这些都不是我想要的结果. 之后,发现了line()函数可以保留原来图片继续作图,在括号中填入所需画图的部分即可(我是将一个矩阵作图). 先运行plot()函数,再注释掉plot()函数运行line()函数即可. 效果如下: 补充:R语言:在同一张图作不同曲线 R语言将两条曲线作在同一张图的方法是 library(ggplot2) year<-c(1993,1998,2003,2008) Res<-c(0.0

  • 基于R语言for循环的替换方案

    R语言中,for循环运行比较慢 for(i in 1:1000){ print(i^2) } 补充:R语言:for循环使用小结 基本结构展示: vals =c(5,6,7) for(v in vals){ print(v) } #即把大括号里的内容对vals里的每一个值都循环run一遍 实例展示: 1. paste() 命令是把几个字符连接起来 如paste("A","B","C",sep=" ")得到的就是"A B

  • R语言-如何循环读取excel并保存为RData

    之前写过一个循环读取excel的代码,最近又有了新的需求:循环读取xlsx文件中的多个sheet,处理完之后循环输出到xlsx文件中的多个sheet中,总结一下. 1.循环读取csv文件并输出为RData格式 homedir <- "D:/Documents/tina/Database" #设置路径 setwd(homedir) temp = list.files(pattern="*.csv") for (i in 1:length(temp)) { fil

  • 基于R语言赋值符号的区别说明

    R语言赋值可以用=或<-,一般都建议使用<-,那你知道这两个之间的区间吗?那你有没有见过'<-'和'='这种赋值方法吗?今天就来和大家聊聊这基本的赋值符号都有哪些区别. 首先我们来看看符号的优先级,和java,c这些编程语言的优先级类似.下面这些都取自R帮助文档,输入?Syntax即可查看,它是根据优先级从高到低排列的. :: ::: access variables in a namespace $ @ component / slot extraction [ [[ indexing

  • 基于R语言xlsx安装遇到的问题及解决方案

    1.java环境的安装,如果java安装的是64位使用R软件一定要是64位,如果使用32位会报错,版本一定要对应. 2.安装顺序要是install.packages("rJava") install.packages("xlsxjars") install.packages("xlsx") 3.如果之前不是安装2中那样的顺序安装,虽然rJava或者xlsxjars包都下载了,但是就是安装不上xlsx,这时候可以选择到R安装目录下的library中

  • 基于R语言 数据检验详解

    目录 1.W检验(Shapiro–Wilk(夏皮罗–威克尔)W统计量检验) 2.K检验(经验分布的Kolmogorov-Smirnov检验) 3.相关性检验: 4.T检验 5.正态总体方差检验 6.二项分布总体假设检验 7.Pearson拟合优度χ2检验 8.Fisher精确的独立检验: 9.McNemar检验: 10.秩相关检验 11.Wilcoxon秩检验 1. W检验(Shapiro–Wilk (夏皮罗–威克尔 ) W统计量检验) 目标:检验数据是否符合某正态分布,如:标准正态分布N(0,

  • 基于R语言中的各种更新方法分享

    宏包的更新 卸载package remove.packages("mypackage") 查看的version R.version 或者 getRversion() 查看package的version packageVersion("mypackage") 更新包 update.packages() 或者 update.packages(ask = FALSE) 删除包 remove.packages("mypackage") R软件的更新 in

  • R语言基于Keras的MLP神经网络及环境搭建

    目录 Intro 环境搭建 本机电脑配置 安装TensorFlow以及Keras 安装R以及Rstudio 基于R语言的深度学习MLP 在Rstudio中安装Tensorflow和Keras MNIST数据集的预处理 深度学习MLP模型 总结和学习笔记 Intro R语言是我使用的第一种计算机语言,也是目前的主流数据分析语言之一,常常被人与python相比较.在EDA,制图和机器学习方面R语言拥有很多的的package可供选择.但深度学习方面由于缺少学习库以及合适的框架而被python赶超.但K

  • R语言将变量分组的3种方法实例(含cut函数说明)

    目录 前言 方法一:直接对分组变量进行赋值 方法二:使用within函数对变量进行分组 方法三:采用cut函数 总结 前言 在数据处理的过程中,我们有时候需要将连续的数值数据转换为类别数据,比如将收入分成高.中和低三组,将学生成绩分为优.良.中.及格和不及格五组. 本来将基于R语言,采用三种方法来实现:第一种是对变量直接进行重新赋值,第二种是使用within函数对语句进行组织,第三种是cut函数. 首先我们定义一个数据框,这个数据框包括学生姓名和数学成绩两个变量. #定义数据框 mathScor

  • R语言数据建模流程分析

    目录 Intro 项目背景 前期准备 数据描述 数据清洗 预分析及预处理 数值型数据 类别型数据 特征 Boruta算法 建模 模型对比 Intro 近期在整理数据分析流程,找到了之前写的一篇代码,分享给大家.这是我上学时候做的一个项目,当时由于经验不足产生了一些问题,这些问题会在之后一点一点给大家讨论,避免各位踩坑.本篇分享会带一些讲解,可能有些地方不够清楚,欢迎留言讨论. 本次除了分享之外也是对自己之前项目的一个复盘.还是使用R语言(毕竟是我钟爱的语言).Python的如果有需求之后会放别的

  • R语言多线程运算操作(解决R循环慢的问题)

    已经大半年没有更新博客了..最近都跑去写分析报告半年没有R 这次记录下关于R循环(百万级以上)死慢死慢的问题,这个问题去年就碰到过,当时也尝试过多线程,but failed......昨天试了下,终于跑通了,而且过程还挺顺利 step1 先查下自己电脑几核的,n核貌似应该选跑n个线程,线程不是越多越好,线程个数和任务运行时间是条开口向下的抛物线,最高点预计在电脑的核数上. detectCores( )检查当前电脑可用核数 我的是4所以step2选的是4 library(parallel) cl.

随机推荐