
R语言编程基础篇(1)
1. 建立多维数组
array(1:36, dim = c(2, 2, 3, 3))
2. 使用list.files函数遍历文件夹中的文件
比如列出当前工作目录下的所有文件
list.files(getwd())
[1] "1.pdf" "10plots.pdf"
[3] "140408696.txt" "1plots.pdf"
[5] "2plots.pdf" "3plots.pdf"
还可以设置正则表达式来过滤文件
列出当前工作目录下所有的R语言源代码文件
list.files(getwd(),pattern = '*.[R|r]$')
[1] "Ask.R" "gg.R"
3. 用sciplot包的画boxplot图
#加载数据
library(MASS)
cab<-data.frame(cabbages)
cab[1,]
library(sciplot)
bargraph.CI(Cult, HeadWt, group =Date , data =cab,
xlab = NA, ylab = NA, cex.lab = 1.5, x.leg = 1,
col = "black", angle = 45, cex.names = 1.25,
density = c(0,20,100), legend = TRUE,ylim=c(0,5))
box()
bargraph.CI(Date,HeadWt, group =Cult , data =cab,
xlab = NA, ylab = NA, cex.lab = 1.5, x.leg = 1,
col = "black", angle = 45, cex.names = 1.25,
density = c(0,20), legend = TRUE,ylim=c(0,5))
box()
在这个boxplot中,不用自己计算均值和误差,也不用自己调整数据结构,不用转化为matrix,很方便。
4. 多系列图
x<-seq(from = 1,to = 9,by =2)
y<-seq(from = 2,to = 10,by= 2)
barplot(rbind(x,y),beside=T,col=heat.colors(2))
5. 应该注意避免使用的变量名
R语言中预定义了大量函数,有些函数名相当简单,比如c()函数,根据本人的实践经验,应该避免使用过于简单的变量名,以免与R语言已有名称冲突,而出现意想不到的错误。自己取变量名字是,最好能加上自己的一些特征,比如公司缩写,比如本人公司首字母缩写为MS,则本人使用的变量名都以MS开头,然后接下划线,比如MS_Alarm,MS_Books等等。
以下是尽量应该避免使用的变量名:
单个字符:a,b,c,d,…,x,y,z,A,B,…,X,Y,Z,
已经被R语言使用的名字:data,names,dim,seq,…
另外,命名新变量时,应该先检查一下变量名是否已经存在。
可以使用get()函数查询变量名,看是否有返回值。
6. Windows环境下,R语言调用C语言库
1.安装Rtools,http://www.murdoch-sutherland.com/Rtools/Rtools.exe这个在写R包时要用,当然这里不会提到。
2.配置环境变量,“我的电脑”–>“属性”–>“高级”–>“环境变量”–>“系统变量”–>PATH,在后面添加:D:\Rtools\bin; D:\Rtools\perl\bin;D:\Rtools\MinGW\bin;D:\R-2.8.1\bin(前三个取决于Rtools的安装位置,最后一个取决于R安装的位置)
3.编写C代码(命名为fac3.c),下面程序得到i*j*k(1<=i,j, k<=n)的和,注意:参数必须用指针表示(对应R中的向量),且编写的C函数不能有显式返回值,即函数返回要声明为void;(参见http://www.wentrue.net/blog/?p=72,该文是在linux下的。)
voidfac3(double *n, double *m){
*m=0;
int i,j,k;
for(i=1;i<=*n;i++){
for(j=1;j<=*n;j++){
for(k=1;k<=*n;k++){
*m=*m+i*j*k;
}
}
}
}
4.编译C,在DOS中(fac3.c所在的文件夹下)输入RCMD SHLIB fac3.c
即可得到.dll文件
5.R中调用,并与R做循环的速度进行比较
dyn.load("fac3.dll")
system.time(out<-.C("fac3",a=1000,b=1))#第一个参数对应C中的函数名
我的老机上运行时间:
user system elapsed
6.67 0.00 6.81
再看看R中的速度
n= 100
m= 0
system.time(for (iin1:n) {
for (jin1:n) {
for (kin1:n) {
m = m + i * j * k
}
}
})
user system elapsed
7.34 0.00 7.44
通过比较可以发现,调用的C做了1000^3次循环比R中做了100^3循环的速度还快!
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
DSGE 模型中的 Et:理性预期算子的内涵、作用与应用解析 动态随机一般均衡(Dynamic Stochastic General Equilibrium, DSGE)模 ...
2025-09-17Python 提取 TIF 中地名的完整指南 一、先明确:TIF 中的地名有哪两种存在形式? 在开始提取前,需先判断 TIF 文件的类型 —— ...
2025-09-17CDA 数据分析师:解锁表结构数据特征价值的专业核心 表结构数据(以 “行 - 列” 规范存储的结构化数据,如数据库表、Excel 表、 ...
2025-09-17Excel 导入数据含缺失值?详解 dropna 函数的功能与实战应用 在用 Python(如 pandas 库)处理 Excel 数据时,“缺失值” 是高频 ...
2025-09-16深入解析卡方检验与 t 检验:差异、适用场景与实践应用 在数据分析与统计学领域,假设检验是验证研究假设、判断数据差异是否 “ ...
2025-09-16CDA 数据分析师:掌控表格结构数据全功能周期的专业操盘手 表格结构数据(以 “行 - 列” 存储的结构化数据,如 Excel 表、数据 ...
2025-09-16MySQL 执行计划中 rows 数量的准确性解析:原理、影响因素与优化 在 MySQL SQL 调优中,EXPLAIN执行计划是核心工具,而其中的row ...
2025-09-15解析 Python 中 Response 对象的 text 与 content:区别、场景与实践指南 在 Python 进行 HTTP 网络请求开发时(如使用requests ...
2025-09-15CDA 数据分析师:激活表格结构数据价值的核心操盘手 表格结构数据(如 Excel 表格、数据库表)是企业最基础、最核心的数据形态 ...
2025-09-15Python HTTP 请求工具对比:urllib.request 与 requests 的核心差异与选择指南 在 Python 处理 HTTP 请求(如接口调用、数据爬取 ...
2025-09-12解决 pd.read_csv 读取长浮点数据的科学计数法问题 为帮助 Python 数据从业者解决pd.read_csv读取长浮点数据时的科学计数法问题 ...
2025-09-12CDA 数据分析师:业务数据分析步骤的落地者与价值优化者 业务数据分析是企业解决日常运营问题、提升执行效率的核心手段,其价值 ...
2025-09-12用 SQL 验证业务逻辑:从规则拆解到数据把关的实战指南 在业务系统落地过程中,“业务逻辑” 是连接 “需求设计” 与 “用户体验 ...
2025-09-11塔吉特百货孕妇营销案例:数据驱动下的精准零售革命与启示 在零售行业 “流量红利见顶” 的当下,精准营销成为企业突围的核心方 ...
2025-09-11CDA 数据分析师与战略 / 业务数据分析:概念辨析与协同价值 在数据驱动决策的体系中,“战略数据分析”“业务数据分析” 是企业 ...
2025-09-11Excel 数据聚类分析:从操作实践到业务价值挖掘 在数据分析场景中,聚类分析作为 “无监督分组” 的核心工具,能从杂乱数据中挖 ...
2025-09-10统计模型的核心目的:从数据解读到决策支撑的价值导向 统计模型作为数据分析的核心工具,并非简单的 “公式堆砌”,而是围绕特定 ...
2025-09-10CDA 数据分析师:商业数据分析实践的落地者与价值创造者 商业数据分析的价值,最终要在 “实践” 中体现 —— 脱离业务场景的分 ...
2025-09-10机器学习解决实际问题的核心关键:从业务到落地的全流程解析 在人工智能技术落地的浪潮中,机器学习作为核心工具,已广泛应用于 ...
2025-09-09SPSS 编码状态区域中 Unicode 的功能与价值解析 在 SPSS(Statistical Product and Service Solutions,统计产品与服务解决方案 ...
2025-09-09