首页 > 互联资讯 > 网络资讯  > 

R语言中有哪些相见恨晚的技巧或package?

一、固定开头

首先,清除当前工作路径下的变量,这个很基础。

#清除工作路径下的其他变量 rm(list = ls())

然后,介绍下pacman,我们在使用函数前,都需要library包,如果该包未下载,则需要install.packages获取,但利用pacman的p_load函数,直接把自己需要的包名逗号隔开,就会自动下载/加载,除了一小部分难搞的包还是需要自己手动装一下。另外,if, require这行命令,用来判断是否安装了pacman,如无则下载、加载,如有直接加载。

#加载pacman包,如无则下载 if (!require("pacman")) install.packages("pacman"); library(pacman) #导入用到包 p_load(rvest,xml2,httr,XML,data.table,readr,tidyverse)

此外,我们还需要设定工作路径,通常我们会复制文件夹下的路径"C:\Users\Lenovo\Desktop",然后将,斜杠修改为反斜杠,或双斜杠,之后利用stewd函数设置路径。但利用rstudioapi的getSourceEditorContext函数,可以直接调用当前.R代码文件的当前路径,再设置为代码文件的同一路径就自动修改好了,最后getwd确认一下。

#获取当前代码路径 curWD <- dirname(rstudioapi::getSourceEditorContext()$path) #设置路径 setwd(curWD) #打印当前路径 getwd() 二、常用操作

导入数据。

#导入数据 data_des=import("XXX.csv",encoding="UTF-8",header = TRUE)

查看文件大小。

#查看文件大小 file.info( FullPath("tone_text.Matrix") )$size

变量更名。

#变量更名 colnames(data)=data[1,]

查看数据整体情况,利用DataExplorer,输出数据分布、数据类型、缺失值情况、正态分布情况、主成分分析等结果。

#创建分析报告 create_report(data_out,output_file = "report.html") #查看缺失字段 plot_missing(data,missing_only = TRUE)

缺失值处理,使用mice包,多重插补缺失值。

#查看缺失模式 md.pattern(data) #多重插补 #imp<-mice(data,m=5,seed=1234) #save(imp,file="imp.Rdata") #插补结果汇总 summary(imp) #插补数据替换 data<-complete(imp,action=1)

筛选结果显著的数据。有时候,我们需要输出查看显著的结果,就可以卡0.05的阈值,用filter函数过滤。

#筛选结果显著的数据 Corr_pair <- filter(Corr$ci,Corr$ci[4]<0.05)

函数,比如这里创建urlfun函数,赋予url,filename两个参数,只要给url和filename赋值,就可以得到total爬虫下来的结果,且过程中使用管道符号%>%简化代码。

#创建函数 urlfun<-function(url,filename){ #读取html web <-read_html(url) #读取评论者 names <-web %>% html_nodes('div.hype-fields-df--entry-user-name') %>% html_text() #读取评论 comments <-web %>% html_nodes('div.hype-fields-df--entry-comment > div') %>% html_text() #读取评论时间 ctime <-web %>% html_nodes('span.hype-fields-df--entry-creation-time') %>% html_text() #汇总表格 total <- data.frame(names,comments,ctime) write.csv(total,file =paste(filename,".csv",sep = ""),fileEncoding = "GB18030") return(total) } #函数调用 url<-'rawhtml/challenge1/OpenIDEO - Idea_ _Balancing Anonymity and Trust to Improve Inclusive Knowledge-Sharing in Professional Communities_.html' filename="challenge_1" urlfun(url,filename)

循环。这里首先创建iv存放自变量,dv存放因变量,然后利用循环做回归分析,输出回归统计结果。

#筛选自变量 iv<-c("mrt","cub") #筛选因变量 dv<-c("corr","rt") #建立存储表 result<-c() #循环计算 for(i in 1:length(iv)){ for(j in 1:length(dv)){ fit<-lm(substitute(dv ~ iv,list(iv=as.name(iv[i]),dv=as.name(dv[j]))),data=data_out) result<-rbind(result,c(dv[j],iv[i],coef(summary(fit))[2,c(1,2,4)])) } } #转化矩阵为数据表 result<-as.data.frame(result) #字符格式转为数值 result[3:5]<-as.numeric(unlist(result[,3:5]))

创建文件夹,先判断是否存在output文件夹,如无则创建,并修改路径。

#创建output存放结果,并设置路径 if(! dir.exists("output")){ dir.create("output") } #设定路径 setwd("output")

sink函数,可以将console框输出的结果,导出成txt文件。比如这里,将信度分析的结果放到output文件夹里,存成Alpha.txt,console就不会输出任何信息,最后sink()停止,恢复正常。

#结果信息输出txt sink("output/Alpha.txt") Alpha(data_total[,4:29],varrange = "1、我感到被排斥:26、我感到很悲伤") sink()

png函数和sink类似,创建一个png文件,绘制一张图(这里用emmip做交互作用),最后dev.off关闭绘制,路径下产生该图png格式。

#结果信息输出png png("group_nPumps.png") emmip(m, ~ group | sex, CIs=TRUE) dev.off()

图片合并。我们可以利用p1...p9存放不同图片,然后利用(p1/p2|p3/p4)的方式合并起来,/代表竖排,|代表横排。也可以利用par设定4*5的窗口大小,随后生成的图片自动填充满这个4*5的大图。

#合并图片 style1<-(p1/p2/p3|p4/p5/p6|p7/p8/p9) par(mfrow = c(4, 5))

绘制交互式网络,有时候我们需要可视化一些网络关系,可以导入节点和边数据,visNetwork可视化。

#导入节点数据 nodes <- readxl::read_xls("nodes.xls") #导入边数据 edges <- readxl::read_xls("edges.xls") #可视化及参数设置 visNetwork(nodes, edges) %>% visOptions(manipulation = TRUE) %>% visInteraction(navigationButtons = TRUE) %>% visEdges(arrows = 'from', scaling = list(min = 2, max = 2)) %>% visLegend() %>% visOptions(manipulation = TRUE)

导出数据。

#导出成xlsx xlsx::write.xlsx(data_out,"data_out.xlsx") #导出成csv write.csv(Corr_pair,"Corr_pair.csv")

分组输出描述性统计。

#分组输出描述性统计 psych::describe.by(data_out[,c(6,9:31)],list(data_out$sex))

另外,有时候数据分析run的时间挺长,可以利用gm包制作音乐(用自己准备的也可),然后用PraatR包,写行播放音频的命令放到代码最后。

# gm创建 Music 对象 m <- # 初始化 Music 对象 Music() + # 加上 4/4 拍号 Meter(4, 4) + # 加上一条包含四个音的声部 Line(list("C5", "D5", "E5", "F5"), list(1, 1, 1, 1)) # 转化成乐谱和音频 show(m, c("score", "audio")) #PraatR播放音频 praat( "Play", input="C:\\Users\\Lenovo\\Desktop\\tone.wav" ) 三、以上代码汇总#清除工作路径下的其他变量 rm(list = ls()) #加载pacman包,如无则下载 if (!require("pacman")) install.packages("pacman"); library(pacman) #导入用到包 p_load(rvest,xml2,httr,XML,data.table,readr,tidyverse) #获取当前代码路径 curWD <- dirname(rstudioapi::getSourceEditorContext()$path) #设置路径 setwd(curWD) #打印当前路径 getwd() #导入数据 data_des=import("XXX.csv",encoding="UTF-8",header = TRUE) #查看文件大小 file.info( FullPath("tone_text.Matrix") )$size #变量更名 colnames(data)=data[1,] #创建分析报告 create_report(data_out,output_file = "report.html") #查看缺失字段 plot_missing(data,missing_only = TRUE) #查看缺失模式 md.pattern(data) #多重插补 #imp<-mice(data,m=5,seed=1234) #save(imp,file="imp.Rdata") #插补结果汇总 summary(imp) #插补数据替换 data<-complete(imp,action=1) #筛选结果显著的数据 Corr_pair <- filter(Corr$ci,Corr$ci[4]<0.05) #创建函数 urlfun<-function(url,filename){ #读取html web <-read_html(url) #读取评论者 names <-web %>% html_nodes('div.hype-fields-df--entry-user-name') %>% html_text() #读取评论 comments <-web %>% html_nodes('div.hype-fields-df--entry-comment > div') %>% html_text() #读取评论时间 ctime <-web %>% html_nodes('span.hype-fields-df--entry-creation-time') %>% html_text() #汇总表格 total <- data.frame(names,comments,ctime) write.csv(total,file =paste(filename,".csv",sep = ""),fileEncoding = "GB18030") return(total) } #函数调用 url<-'rawhtml/challenge1/OpenIDEO - Idea_ _Balancing Anonymity and Trust to Improve Inclusive Knowledge-Sharing in Professional Communities_.html' filename="challenge_1" urlfun(url,filename) #筛选自变量 iv<-c("mrt","cub") #筛选因变量 dv<-c("corr","rt") #建立存储表 result<-c() #循环计算 for(i in 1:length(iv)){ for(j in 1:length(dv)){ fit<-lm(substitute(dv ~ iv,list(iv=as.name(iv[i]),dv=as.name(dv[j]))),data=data_out) result<-rbind(result,c(dv[j],iv[i],coef(summary(fit))[2,c(1,2,4)])) } } #转化矩阵为数据表 result<-as.data.frame(result) #字符格式转为数值 result[3:5]<-as.numeric(unlist(result[,3:5])) #创建output存放结果,并设置路径 if(! dir.exists("output")){ dir.create("output") } #设定路径 setwd("output") #结果信息输出txt sink("output/Alpha.txt") Alpha(data_total[,4:29],varrange = "1、我感到被排斥:26、我感到很悲伤") sink() #结果信息输出png png("group_nPumps.png") emmip(m, ~ group | sex, CIs=TRUE) dev.off() #合并图片 style1<-(p1/p2/p3|p4/p5/p6|p7/p8/p9) par(mfrow = c(4, 5)) #导入节点数据 nodes <- readxl::read_xls("nodes.xls") #导入边数据 edges <- readxl::read_xls("edges.xls") #可视化及参数设置 visNetwork(nodes, edges) %>% visOptions(manipulation = TRUE) %>% visInteraction(navigationButtons = TRUE) %>% visEdges(arrows = 'from', scaling = list(min = 2, max = 2)) %>% visLegend() %>% visOptions(manipulation = TRUE) #导出成xlsx xlsx::write.xlsx(data_out,"data_out.xlsx") #导出成csv write.csv(Corr_pair,"Corr_pair.csv") #分组输出描述性统计 psych::describe.by(data_out[,c(6,9:31)],list(data_out$sex)) # gm创建 Music 对象 m <- # 初始化 Music 对象 Music() + # 加上 4/4 拍号 Meter(4, 4) + # 加上一条包含四个音的声部 Line(list("C5", "D5", "E5", "F5"), list(1, 1, 1, 1)) # 转化成乐谱和音频 show(m, c("score", "audio")) #PraatR播放音频 praat( "Play", input="C:\\Users\\Lenovo\\Desktop\\tone.wav" ) 四、好用R包

心理学bruceR(强大的输出三线表、绘图等功能,适合心理学类社科领域)、jmv(对接gui分析软件jamovi),科学计量bibliometrix,爬虫rvest,报告rmarkdowm,语音分析PraatR,元分析dmetar,名字分析ChineseNames,网站制作blogdown,文本挖掘tm,自动检验数据分布、异常值等情况DataExplorer,各类流程图制作DiagrammeR,作图ggplot2,缺失值处理mice,APA格式papaja,shinyapp制作shiny,网络分析可视化visNetwork,Mantel检验linkET,零效应评估pwr(检验力、效应量计算,类似gpower)、TOSTER(NHST区间估计)、HDInterval(贝叶斯区间估计)、BEST(贝叶斯估计)、BayesFactor(贝叶斯因子),聚类cluster(clusGap函数估计聚类数,结合factoextra包可视化)。

另外,之前作报告也列了下语音相关的R包。

结束啦!主要是整理下自己的笔记,之后找着方便,不定时更新。。

R语言中有哪些相见恨晚的技巧或package?由讯客互联网络资讯栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“R语言中有哪些相见恨晚的技巧或package?