windows 下载 R 和 R studio,以及R语言基本使用

article/2025/9/17 10:06:48

目录

一. 安装与入门介绍

1. windows 下载 R 和 R studio

2. 常见问题的对应包查询

3. 解决RStudio 打开文件中文乱码

4. 相关包

5. 获取帮助、工作目录、保存 R 文件

二. R常用数据类型和数据结构

1. 数值型、字符型、逻辑型

2. 判断和转换

3. 特殊值及其判断

4. 数据结构中的常量和变量赋值

5. 向量

6. 矩阵 [本质上是存同一种数据类型的数据结构,用c会强制类型转换]

7. 列表 [区别于矩阵,维度不要求一致,不要求存同种数据类型]

8. 数据框 [特殊的列表和矩阵]

三. R基本运算和常用函数

1. 基本运算

2. 向量相关函数

3. 数据框和矩阵相关函数

4. 字符函数与分布相关函数

四. R语法结构-循环、条件、函数构建

1. 循环和条件语句

2. 函数构建


一. 安装与入门介绍

1. windows 下载 R 和 R studio

The Comprehensive R Archive Networkhttps://mirrors.ustc.edu.cn/CRAN/

RStudio Desktop - Posithttps://posit.co/download/rstudio-desktop/

2. 常见问题的对应包查询

CRAN Task Views (ustc.edu.cn)https://mirrors.ustc.edu.cn/CRAN/web/views/

3. 解决RStudio 打开文件中文乱码

File -> Reopen with Encoding -> utf-8

4. 相关包

一次安装,多次加载;用 library(包名) 加载

5. 获取帮助、工作目录、保存 R 文件

#获取帮助
help("library") #获取工作目录
getwd()
setwd("E:/R")
read.csv(file.choose())# 保存 .RData
save()
save.image()
load()# 列出当前环境中的对象
ls() 
rm() # 移除某个对象
rm(list=ls())  # 移除所有对象

二. R常用数据类型和数据结构

1. 数值型、字符型、逻辑型

123,2.34;   "Hello,world", '123';      TRUE, T, FALSE, F

2. 判断和转换

is.numeric(123)  ;  is.character('123')  ;   is.logical('123')

as.numeric('123') ;  as.numeric(T)  ;  as.character(123)

3. 特殊值及其判断

NA, is.na(NA)

NULL, is.null(NULL)

NAN, is.nan(NAN) ----not a number, e.g. 0/0

Inf, -Inf, is.infinite(-Inf)

4. 数据结构中的常量和变量赋值

1)常量:

pi
letters
LETTERS
month.name
month.abb

2)变量赋值:

v1 <- 1:5 # both 1 and 5 are inclusive
v2 <- c(3,2,7,4,6)
v3 <- rep(v2, times=2)
v4 <- rep(v2, each=2)
v5 <- rep(v2, times=2, each=2)
v6 <- seq(from =2, to=9, by=3)
v7 <- seq(from =2, to=9, length.out=3)
v8 <- seq(from =2, by=3, length.out=4)v9 <- c('air','bic','cp')
rep(v9,each=3)c(T,T,F,T)

5. 向量

1)c会自动转换为同一类型

字符 > 数字 > 逻辑

2)向量长度、名称、索引

# 向量元素名称
names(v2)
names(v2) <- v9
v2# 向量长度
length(v9)# 向量索引
v8[3]
v8[c(1,3,5)]
v8[-c(1,4)]  ##负号表示排除,区分于python
v2[c('aic','cp')]
v1[v1%%2==1]

6. 矩阵 [本质上是存同一种数据类型的数据结构,用c会强制类型转换]

m1 <- matrix(1:6,nrow = 2,# ncol =3,byrow = F,dimnames = list(c('r1','r2'),c('c1','c2','c3'))   # 也可事后用 rownames(m1) <- c('R1','R2',...) 赋值
)
m1# matrix(NA, ncol=3, nrow=3)m2 <- matrix(c(1:6, letters[1:6]),   ##强制转换成characternrow = 3,byrow = T,dimnames = list(c('r1','r2','r3'),c('c1','c2','c3','c4'))
)
m2
# 矩阵行列名称
colnames(m1)
rownames(m1)
dimnames(m2)# 矩阵维度信息
dim(m1)
ncol(m1)
nrow(m1)# 矩阵索引
m2[1,2]    # 返回向量
m2[1,]     # 注意:不加逗号时, m2[1] 返回第2行第1个值,而 m2['r1'] 返回 NA!
m2['r1',]
m2[,2]   
m2[,'c2']m2[1:2,2:3] # 返回矩阵
m2[c(1,3), c(2,4)]
m2[c('r1','r2'),c('d2','c3')]# 矩阵转换成向量
as.vector(m1)

7. 列表 [区别于矩阵,维度不要求一致,不要求存同种数据类型]

l1 <- list( com1=v1,com2=m1)
l1# 长度信息
length(l1)# 名称
names(l1)# 列表索引
l1$com1       # 返回向量
l1[['com2']]  # 返回矩阵
l1[[2]]       # 返回矩阵 , 列表不能有 l1[1,2]的写法l1['com1']    # 返回列表而非元素,所以列表索引要2个框 or $
l1[2]         # 返回列表# 新建成分
l1$com3 <- 3:6
l1# 释放列表
unlist(l1)

8. 数据框 [特殊的列表和矩阵]

# 数据框 (特殊的列表-自动生成行索引,初始化给出列)
df1 <- data.frame(c1 = 2:5,c2 = LETTERS[2:5]
)
df1# 维度信息
dim(df1)
ncol(df1)
nrow(df1)# 行列名称
dimnames(df1)
names(df1)
colnames(df1)
rownames(df1)# 数据框索引
df1[1:2, 2]  # 返回向量
df1[,2]      # 返回向量
df1[1,]      # 返回数据框df1[,"c1"]   # 返回向量
df1['1',]    # 返回数据框# 新建列,同列表
df1$c3 <- 1:4
df1# 常见例子:生成用于网格搜索的数据框
expand.grid(mtry = 2:5,ntree = c(200, 500))

三. R基本运算和常用函数

1. 基本运算

1 + 2
3 - 2
3 * 4
8 / 5c(1:4) / c(2:5)  
c(1:6) / c(2:5)   # 循环扩展4 ^ 3
exp(1)
log(x=25, base=5)
sqrt(4)
abs(-5.6)
sign(-5.6)
round(3.45679,2)
signif(3.245, 2) # 保留指定位有效数字
ceiling(3.2)
floor(3.2)2 == 3
2 != 3
2 > 3
2 >= 32 %in% 2:5 # 表示在范围内(2>3) & (2 %in% 2:5)
(2>3) | (2 %in% 2:5)
!(2 %in% 2:5)

2. 向量相关函数

# 向量相关函数
v2 <- c(3,2,7,4,6,8,11,21)
max(v2)
cummax(v2)min(v2)
cummin(v2)sum(v2)
cumsum(v2)prod(v2)
cumprod(v2)mean(v2)
median(v2)
sd(v2)
var(v2)rev(v2)
sort(v2)v5 <- rep(v2, times=2)
table(v5)  # 向量元素频数统计
unique(v5)# 索引函数
which(v5==7)  # 返回所有的TRUE的位置
which.max(v5) # 仅返回第一个max的位置
which.min(v5)# 交差并
intersect(1:5, 4:7)
setdiff(1:5, 4:7)
union(1:5, 4:7)

3. 数据框和矩阵相关函数

dfs <- data.frame(a=1:5,b=3:7,d=letters[1:5]
)# 行列合并
df1 <- dfs[1:3,]
df1
df2 <- dfs[3:5,]
df2rbind(df1, df2)  ## 要求列数、列名称相同
cbind(df1, df2)  ## 要求行数相同# 行列运算
colMeans(dfs[,1:2])
colSums(dfs[,1:2])
rowMeans(dfs[,1:2])
rowSums(dfs[,1:2])# apply(x, margin, function)  ### 1代表行,2代表列
apply(dfs[,1:2], 2, sd)
apply(dfs[,1:2],2,function(x){sum(is.na(x))}
)# 对象结构信息
str(dfs)
summary(dfs)
View(dfs)
head(dfs, n=2)  ## 默认n=6
tail(dfs, n=2)# 矩阵运算
m3 <- matrix(c(5,7,3,4),ncol=2,byrow=T
)
m3m4 <- matrix(c(5,7,3,4,8,9),ncol=3,byrow=T
)
m4t(m3)           # 矩阵转置
m3 %*% m4       # 矩阵相乘
solve(m3)       # m3 %*% x = E, 矩阵求逆
solve(m3, m4)   # m3 %*% x = m4

4. 字符函数与分布相关函数

# 字符函数与分布相关函数# 连接成字符向量
paste(1:5, collapse='+')
paste(1:5, letters[1:8], sep='~')  # 扩散机制
paste0(1:5, letters[1:8])          # 一对一紧密相连# 字符长度
nchar(month.name)# 转大小写
toupper(month.name)
tolower(month.name)# 含有某个字符的元素的索引
grep('Ju', month.name)# 替换指定字符
gsub('e', '000', month.name)# 随机分布函数 
set.seed(24)  
sample(1:2, 12, replace=T)    # 随机抽样
rnorm(10, mean=1, sd=2)
pnorm(1, mean=1, sd=2)
qnorm(0.5, mean=1, sd=2)
dnorm(1, mean=1, sd=2)# par(mar = c(1, 1, 1, 1))  ### fig太大时可以用这行
plot( x=seq(-5, 7, length=1000),y=dnorm(seq(-5, 7, length=1000),mean=1,sd=2),type= 'l',ylim = c(0,0.25))
abline(h=0, v=1)

四. R语法结构-循环、条件、函数构建

1. 循环和条件语句

# 例子
df <- data.frame(c1 = 2:5,c2 = 4:7,c3 = -19:-16)for (i in 1:nrow(df)) {print(sum(df[i,]))
}j = 1
while (j <= nrow(df)) {print(sum(df[j,]))j = j+1
}# next, break 等价于 python中的continue和break# 条件结构: if.. else if.. else..; ifelse
s = 40
ifelse(s %% 2 ==0, '偶数', '奇数')

2. 函数构建

# 函数构建
f1 <- function(aug1, aug2=4){res <- aug1 + aug2return (res)
}
f1(34)
f1(34,5)


http://chatgpt.dhexx.cn/article/BL6wgW14.shtml

相关文章

【R语言实例】igraph — 网络分析与可视化包(1)

作者简介&#xff1a; 本文作者系大学统计学专业教师&#xff0c;多年从事统计学的教学科研工作&#xff0c;在随机过程、统计推断、机器学习领域有深厚的理论积累与应用实践。 igraph是一套用于网络分析与可视化的r包&#xff0c;它以高效、便捷、使用简单的特点在网络分析研究…

社交网络分析的 R 基础:(一)初探 R 语言

写在前面 3 年的硕士生涯一转眼就过去了&#xff0c;和社交网络也打了很长时间交道。最近突然想给自己挖个坑&#xff0c;想给这 3 年写个总结&#xff0c;画上一个句号。回想当时学习 R 语言时也是非常戏剧性的&#xff0c;开始科研生活时到处发邮件要源代码&#xff0c;发完最…

使用R包networkD3绘制炫酷的动态关系网络

引言 在数据可视化领域&#xff0c;关系网络数据的可视化一直是一个受到广泛关注的话题。 我们经常会看到这样的复杂网络关系图。 也会经常看到一些影视作品的人物关系图&#xff0c;例如&#xff1a; 我们可以从图中清晰地了解到不同人物之间的关系&#xff0c;但是这样静态…

复杂网络笔记-R语言

最近学习了下复杂网络相关的东西&#xff0c;总结了部分基础的理论&#xff0c;与使用R语言igraph包&#xff0c;总结如下&#xff0c;还需要继续深入&#xff0c;目前只学了皮毛。 复杂网络的复杂性 1、结构复杂性 网络连接结构看上去错综复杂&#xff0c;网络连接结构可能…

R语言神经网络

R语言中已经有许多用于神经网络的package。例如nnet、AMORE以及neuralnet&#xff0c;nnet提供了最常见的前馈反向传播神经网络算法。 AMORE包则更进一步提供了更为丰富的控制参数&#xff0c;并可以增加多个隐藏层。 neuralnet包的改进在于提供了弹性反向传播算法和更多的激…

如何用 R 绘制交互式社会网络图?

挖掘社会关系网络&#xff0c;助你洞若观火。 需求 最近有个学生问我&#xff0c;如何绘制交互式社会网络图&#xff08;Interactive Social Network Graph&#xff09;&#xff1f; 之所以一定要交互式&#xff0c;是因为他的应用场景&#xff0c;是演示给客户。 他解释说&…

R语言如何绘制相互作用网络图(27)

1.什么是相互作用网络图&#xff1f; 生物网络是复杂网络&#xff0c;也是以系统科学的思想研究生命科学的桥梁。网络中的节点可以是蛋白质&#xff0c;基因&#xff0c;RNA或DNA等&#xff0c;网络的边对应节点之间的物理、生化或功能上的相互作用。生物分子之间的相互作用并…

R语言网络分析2:graph函数和应用

产生网络 自定义 BioC 中用得最多的网络类型可能是 graphNEL 类。使用 graphNEL 类的同名函数可以产生自定义网络&#xff1a; library(graph)str(graphNEL) #> function (nodes character(), edgeL list(), edgemode "undirected") nds <- letters[1:3]…

在R语言中轻松创建关联网络

数据 ## Ozone Solar.R Wind Temp Month Day ## 1 41 190 7.4 67 5 1 ## 2 36 118 8.0 72 5 2 ## 3 12 149 12.6 74 5 3 ## 4 18 313 11.5 62 5 4 ## 5 NA NA 14.3 56 5 5 ## 6 28 …

(转载)攻击方式学习之(3) - 缓冲区溢出(Buffer Overflow)

堆栈溢出 堆栈溢出通常是所有的缓冲区溢出中最容易进行利用的。了解堆栈溢出之前&#xff0c;先了解以下几个概念&#xff1a; 缓冲区 简单说来是一块连续的计算机内存区域&#xff0c;可以保存相同数据类型的多个实例。 堆栈 堆 栈是一个在计算机科学中经常使用的抽象数据类型…

关于内核堆溢出漏洞的分析

一、漏洞背景 CVE-2021-22555是一个存在了15年之久的内核堆溢出漏洞&#xff0c;它位于内核的Netfilter组件中&#xff0c;这个组件可以被用来实现防火墙、NAT等功能。 该漏洞在2006年由commit 9fa492cdc160cd27ce1046cb36f47d3b2b1efa21引入&#xff0c;并在2021年由commit …

Linux kernel ‘qeth_snmp_command’函数缓冲区溢出漏洞

漏洞名称&#xff1a;Linux kernel ‘qeth_snmp_command’函数缓冲区溢出漏洞CNNVD编号&#xff1a;CNNVD-201311-423发布时间&#xff1a;2013-11-29更新时间&#xff1a;2013-11-29危害等级&#xff1a;中危 漏洞类型&#xff1a;缓冲区溢出威胁类型&#xff1a;本地CVE编号…

hackthebox-buff(gym渗透 端口转发 cloudme 缓冲区溢出 )

1、扫描 masscan快速全局扫&#xff0c;nmap具体扫。7680不知道&#xff0c;8080是web进去搜集信息。 C:\root> masscan -p1-65535,U:1-65535 10.10.10.198 --rate1000 -e tun0Starting masscan 1.0.5 (http://bit.ly/14GZzcT) at 2021-01-17 09:36:41 GMT-- forced optio…

20181018栈溢出

所有内容参考书籍《0day安全&#xff1a;软件漏洞分析技术&#xff08;第二版&#xff09;》 缓冲区溢出 简单来说&#xff0c;缓冲区艺术就是在大缓冲区中的数据向小缓冲区复制的过程中&#xff0c;由于没注意小缓冲区的边界&#xff0c;“撑爆”了较小的缓冲区&#xff0c;…

再谈关于缓冲器溢出

废话少说(说一句废话,这是入门级的) C/C的代码: // buffer overflow code by ctorenshenguo.com #include <windows.h>#include <stdio.h>void fnHack() //the host never expect to run this{ printf("Your computer has been hacked!\n"); //ex…

Go内存溢出与内存泄露

https://www.cnblogs.com/sunsky303/p/11077030.html 一、内存泄露与内存溢出的区别 内存溢出(out of memory&#xff0c;简称OOM) 内存溢出是指程序在申请内存时&#xff0c;没有足够的内存空间供其使用&#xff0c;简单点说就是你要求分配的内存超出了系统能给你的&#…

(原创)攻击方式学习之(3) - 缓冲区溢出(Buffer Overflow)

堆栈溢出 堆栈溢出通常是所有的缓冲区溢出中最容易进行利用的。了解堆栈溢出之前&#xff0c;先了解以下几个概念&#xff1a; 缓冲区 简单说来是一块连续的计算机内存区域&#xff0c;可以保存相同数据类型的多个实例。堆栈 堆 栈是一个在计算机科学中经常使用的抽象数据类型。…

攻击方式学习之(3) - 缓冲区溢出(Buffer Overflow) [zt]

堆栈溢出 堆栈溢出通常是所有的缓冲区溢出中最容易进行利用的。了解堆栈溢出之前&#xff0c;先了解以下几个概念&#xff1a; 缓冲区 简单说来是一块连续的计算机内存区域&#xff0c;可以保存相同数据类型的多个实例。 堆栈 堆 栈是一个在计算机科学中经常使用的抽象数据类型…

linux 远程溢出,Linux Kernel蓝牙CAPI报文远程溢出漏洞

Linux Kernel是开放源码操作系统Linux所使用的内核。 Linux Kernel对入站CAPI消息没有执行正确的处理&#xff0c;远程攻击者可能利用此漏洞在服务器上执行任意指令。 Linux Kernel代码的net/bluetooth/cmtp/capi.c文件中没有正确地处理入站的CAPI消息。如果用户发送了特制的CA…

linux远程溢出,linux-ftpd-ssl 远程溢出漏洞

linux-ftpd-ssl 远程溢出漏洞 2005-11-15 eNet&Ciweek 详细描述&#xff1a; linux-ftpd-ssl是一款支持加密的FTP server。 linux-ftpd-ssl软件包中存在远程溢出漏洞&#xff0c;恶意服务器可能利用此漏洞在主机上执行任意指令。 恶意服务器生成的超长响应命令可能会覆盖栈…