R的基本用法
R变量的命名格式
- 必须以字母开头
- 只能包含字母、数字、下划线和
.。 - 对大小写敏感
- 不能是保留关键字
数据类型(mode)
numeric- (10.5, 55, 787)integer- (1L, 55L, 100L, where the letter "L" declares this as an integer)complex- (9 + 3i, where "i" is the imaginary part)character(a.k.a. string)logical(a.k.a. boolean)
例如:mode(a) #numeric 而typeof(a) #double
types "integer" and "double" are returned as "numeric" mode.
class(), mode(), typeof() 三者的差异:
class() 对象的数据结构:vector、matrix、array、dataframe、list
mode() 对象数据类型。
typeof()查看数据元素类型,基本等同于mode(),比mode()更为详细
x <- 10.5
x <- 1000L
x <- 9i + 3
x <- "R is exciting"
x <- TRUE
注意
- TRUE/FALSE是全大写
- 复数是i,python里复数是j
- 要创建
integer变量,必须L在整数值后面使用字母;如果不加L那一定是numeric变量。
您可以使用以下功能从一种类型转换为另一种类型:
as.numeric()as.integer()as.complex()
x <- 1L
a <- as.numeric(x)
class(a)
min()andmax()函数可用于查找集合中的最小或最大数字sqrt()abs()ceiling(),floor()sign()正数返回1,负数返回-1,0返回0.
字符串
nchar()求字符串长度grepl()检查字符串中是否存在字符或字符序列,return TRUE/FALSE,grepl("H", str)paste()函数连接两个字符串paste(str1, str2)- 转义字符
\
注意:
"和'是等价的- 正常情况下
character就是用一行输出,如果加上cat()会按照代码块里的换行格式输出。
str <- "Lorem ipsum dolor sit amet,
consectetur adipiscing elit,
sed do eiusmod tempor incididunt
ut labore et dolore magna aliqua."
cat(str)
- 如果使用了转义字符,直接用变量名输出会显示
\。如果不像要\, 就用cat()。
、
Logical
注意是TRUE、FALSE, 可以用T、F代替。
operator
^Exponent%%取模%/%整除(余数部分不要)
赋值
<-<<-全局赋值- 也可以改变赋值运算符的方向。
x <- 3等于3 -> x
比较运算符
- ==
- !=
=
逻辑运算符
- 按位
&| - 逻辑
&&,||,!
其他运算符
:生成一组数x <- 1:10%in%Find out if an element belongs to a vectorx %in% y%*%矩阵乘法x <- Matrix1 %*% Matrix2
Vectors
向量默认是列向量
# Vectors
fruits <- c("banana", "apple", "orange")
vec_seq3 <- seq(1, 10, by = 3)
vec_pattern <- rep(1:3, times = 4) #123重复4次
vec_pattern2 <- rep(1:3, times = 4, each = 2) #112233重复4次
numbers <- 1:10 #默认间隔为1
numbers1 <- 1.5:6.5 #默认间隔为1,左闭右闭[]
numbers2 <- 1.5:6.3 #默认间隔为1,这里最后一个数是5.5
numbers <- seq(from=0, to=100, by=20) #生成其他间隔的序列数据
fruits[1]
fruits[c(1, 3)] #索引访问第1个元素、和第3个元素。R中索引从1开始。支持负索引。
fruits[1] <- "pear"
注意:
- 索引从1开始
1:10是左闭右闭的
向量计算
vec <- c(1, 2, 5)
vec * 2 #每个位置上的数都会*2
Vectors Functions
length()sort()
Factors
Factor 用来处理 categorize data.
four_seasons <- c("spring", "summer", "autumn", "winter") four_seasons_factor <- factor(four_seasons) #factor出来会变成字母序,可以指定levels
four_seasons_factor <- factor(four_seasons, levels = c("spring", "summer", "autumn", "winter"))
four_seasons_factor[1]
four_seasons_factor[1] <- "no_spring" #只能赋成levels里已经存在的factor
Factors Functions
length()输出factor的个数levels(data_factor)只想输出levels
数据类型转换
R 中向量里每个元素的类型是一样的,若不同,会强制转换成一致的。
character > numeric > logical
double > integer
Lists
List 可以包含多种数据类型
thislist <- list("apple", TRUE, 123)
thislist[1]
thislist[1] <- "blackcurrant"
mylist
typeof(mylist$first)
Lists Functions
length()%in%看一个元素是否在list中append()append(thislist, "orange", after = 2)- index(索引)的使用
thislist[2:5] - 组合两个list
list1 <- list("a", "b", "c")
list2 <- list(1,2,3)
list3 <- c(list1,list2)
矩阵
mat <- matrix(data = c(2, 4, 6, 7, 8, 10), nrow = 2, ncol = 3, byrow = FALSE) #默认按着列来排
mat[2,] #访问第二行
mat[,3] #访问第三列
mat[2,3]#访问(2,3)
mat[c(1,2),]#访问1,2行
newmatrix <- cbind(thismatrix, c("strawberry", "blueberry", "raspberry")) #column combination加上一列,list的长度必须和矩阵的行数相同
newmatrix <- rbind(thismatrix, c("strawberry", "blueberry", "raspberry")) #row combination
thismatrix <- thismatrix[-c(1), -c(1)] #删除第一行和第一列
一些函数
%in%看矩阵中有没有对应元素"apple" %in% thismatrixdim()看矩阵几行几列length()看矩阵一共有多少元素rbind()和rbind()也可以用于合并两个矩阵Matrix_Combined <- rbind(Matrix1, Matrix2)
矩阵计算函数
t(A) #取转置
diag(A) #square matrix 求对角
det(A)
solve(A) #inverse
eigen(A)
sum(A) #每个位置上的数的和
mean(Aˆ2) #其他运算符同理
Aˆ2 #每个位置上的数平方
A * B #对应位置上的数相乘
B %*% C #叉乘
Arrays
定义高维矩阵(数组)
arr <- array(1:24, c(4, 3, 2), dimnames = list(dim1, dim2, dim3))
arr[2,3,2]
arr[c(1),,1] #仍然可以使用雷同的访问方式
Dataframe
每一列可以数据类型不同,但是同一列里数据类型必须相同。
df <- data.frame(name = c("Alice", "Bob", "Carl"),
age = c(23, 34, 23),
marriage = c(TRUE, FALSE, TRUE),
color = c("red", "blue", "orange"))
#访问一列有三种方式
df[1]
df[["name"]]
df$name
#删除第一行和第一列
Data_Frame_New <- Data_Frame[-c(1), -c(1)]
Dataframe functions
summary(df)可以求df每一列的general统计数据cbind()和rbind()也可以用于合并两个dataframeNew_row_DF <- rbind(Data_Frame, c("Strength", 110, 110))ncol(df),nrow(df)来求列数和行数dim(df)length()
数值计算函数
sum(1:8)
prod(3:5) #product
min(c(1, 5, -10, 300))
max(c(9, 2, -2))
range(c(1, 5, -10, 300))
mean(1:10)
var(1:10)
sd(1:10)
median(1:10)
quantile(1:10)
factorial(4)
exp(0:3)
log(1:10)
round(3.833) #默认是四舍五入到整数
round(3.833, digits = 1)
ceiling(3.83)
floor(3.83)
choose(4, 2) #组合数
which(c(1, 6, -3, -7, 0) <= 0)
any(c(1, 6, -3, -7, 0) <= 0)
all(c(1, 6, -3, -7, 0) <= 0)
IF ELSE
和C++语法一样
if (b > a) {
print("b is greater than a")
} else if (a == b) {
print("a and b are equal")
} else {
print("a is greater than b")
}
WHILE
语法同C++
区别
- C++中是
continue, R里是next
FOR
#sequential index
for (x in 1:10) {
print(x)
}
#list
fruits <- list("apple", "banana", "cherry")
for (x in fruits) {
print(x)
}
#matrix
for (rows in 1:nrow(thismatrix)) {
for (columns in 1:ncol(thismatrix)) {
print(thismatrix[rows, columns])
}
}
#array
for(x in multiarray){
print(x)
}
FUNCTION
my_function <- function(fname = 'no_name') {
paste(fname, "Griffin")
return "hhhh"
}
my_function("Peter")
R中可以function里定义function
Outer_func <- function(x) {
Inner_func <- function(y) {
a <- x + y
return(a)
}
return (Inner_func)
}
output <- Outer_func(3) # To call the Outer_func
output(5) # To call Inner_func
全局变量
- 在函数之外定义的是全局变量
- 如果使用赋值运算符
<<-,则变量属于全局范围 - 如果要更改函数内的全局变量,请使用全局赋值运算符
lecture2上节课剩下的
x<-cbind(x1=3,x2=c(4:1,2:4))
dimnames(x)[[1]]<-letters[1:7]
n_col<-ncol(x)
col_sum<-rep(0,n_col)
for(j in 1:n_col){
col_sum[j]<-sum(x[,j])
}
col_sum
names(col_sum) <- colnames(x)
事实上,上面的代码可以直接用apply实现
R的基本用法的更多相关文章
- ruby 中%Q %q %W %w %x %r %s的用法
%Q 用于替代双引号的字符串. 当你需要在字符串里放入很多引号时候, 可以直接用下面方法而不需要在引号前逐个添加反斜杠 (\") >> %Q(Joe said: "Fr ...
- R语言︱list用法、批量读取、写出数据时的用法
列表是一种特别的对象集合,它的元素也由序号(下标)区分,但是各元素的类型可 以是任意对象,不同元素不必是同一类型.元素本身允许是其它复杂数据类型,比如,列表 的一个元素也允许是列表.例如: > ...
- [Ruby]转载: 关于ruby中 %Q, %q, %W, %w, %x, %r, %s 的用法
单引号内的内容,ruby会原样输出 双引号内的内容,ruby会解析 我们看个简单的例子,针对字符串 #{foo}test 我们分别用单引号核双引号操作 '#{foo}test' ...
- cmd for 用法
1:for命令及变量 基本格式: FOR /参数 %variable IN (set) DO command [command_parameters] %variable:指定一个单一字母可替换的参数 ...
- R语言︱函数使用技巧(循环、if族/for、switch、repeat、ifelse、stopifnot)
每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 后续加更内容: 应用一:if族有哪些成员呢?- ...
- R语言︱构造新序列
1.数值构造函数rep与seq #数值构造rep与seq rep(1:4,each=2)#依次重复1:4两遍 rep(1:4,2) #注意,重复1:4两遍 seq(from=3,to=5,by=0.2 ...
- R语言︱文件读入、读出一些方法罗列(批量xlsx文件、数据库、文本txt、文件夹)
笔者寄语:小规模的读取数据的方法较为简单并且多样,但是,批量读取目前看到有以下几种方法:xlsx包.RODBC包.批量转化成csv后读入. R语言中还有一些其他较为普遍的读入,比如代码包,R文件,工作 ...
- python基础_格式化输出(%用法和format用法)
目录 %用法 format用法 %用法 1.整数的输出 %o —— oct 八进制%d —— dec 十进制%x —— hex 十六进制 1 >>> print('%o' % 2 ...
- python基础_格式化输出(%用法和format用法)(转载)
python基础_格式化输出(%用法和format用法) 目录 %用法 format用法 %用法 1.整数的输出 %o -- oct 八进制%d -- dec 十进制%x -- hex 十六进制 &g ...
- js2py 的用法
python调用js的方法 js2py的简单用法 import js2py js = """ function add(a, b) { return a + b } &q ...
随机推荐
- nodejs <a>带参数返回路由标记执行数据库操作
今天在测试mongo数据库操作维护的时候,测试了一下直接在表内添加操作列来完成数据的删除操作,直接返回数据库ID,页面表格如下: 通过点击删除,即可完成对应条目数据库删除操作. 1.mongo数据操作 ...
- python全局变量和局部变量的关系
今天看了一个全局变量,有点懵不知道全局变量是什么.然后就开始查找相关的资料 总结就一句话:你到哪里都是大爷,就是这么吊 有全局变量那么也有局部变量,同时也用一句话概括:外面怂成孙子,家里横成老子 接下 ...
- linux操作系统scp 命令远程复制文件
scp 复制文件到远程服务器,端口限制情况下 scp -P 22 文件名 远程服务器用户名@IP:/路径 scp -P 22 file user@IP:/file scp -P 复制文件到远程服 ...
- C#测试web服务是否可用(转)
转摘:http://www.cnblogs.com/xienb/p/3443282.html winform客户端经常需要调用webservice或者WCF进行数据交互,但是远程服务有可能不存在或者服 ...
- 全新TI AM62xx系列核心板上市,小小身板蕴藏巨大势能!
2011年TI推出AM335x,成为了此后市场上最受欢迎的通用工业级ARM处理器,并广泛应用于工业HMI, 医疗电子,机器人,能源,汽车等领域.随着工业4.0的发展,HMI人机交互.工业工控.医疗等领 ...
- [Mac技巧] 你真的会使用Mac的“聚焦搜索”吗?
Mac的"聚焦搜索"是对Mac整个磁盘的全局搜索,搜索起来极其便捷,但也常被使用者忽略使用. 以下列出比较常用的几个场景供使用者参考 场景一:文件在哪儿,要立即查看? 1.打开&q ...
- 关于tomcat部署web服务方式
方式1.apache-tomcat-8.0.47\webapps文件夹下放war包会自动解压.文件夹名称就是访问路径 方式2.apache-tomcat-8.0.47\conf\Catalina\lo ...
- SQL无法解决 equal to 运算中 "Chinese_PRC_CI_AS" 和 "SQL_Latin1_General_CP1_CI_AS" 之间的排序规则冲突
在所在的SQL语句后面加上 COLLATE [排序规则]或者ALTER DATABASE [DBName] COLLATE Chinese_PRC_CI_AS
- conda使用杂记
总纲 https://docs.anaconda.com/anaconda/navigator/ 其中有链接 miniconda https://docs.anaconda.com/anaconda/ ...
- DRF的视图与路由集Routers
一 视图 Django REST framwork 提供的视图的主要作用: 控制序列化器的执行(检验.保存.转换数据) 控制数据库模型的操作 一 普通视图APIView 一 两个视图基类 1 APIV ...