R语言-变量与运算符

变量和运算符

1.变量命名

R语言的变量可以存储原子向量、原子向量组或许多R对象的组合。

命名规范:

  • 变量名由字母、数字、下划线或 . 组成
  • 变量名的开头:
    • 以字母开头,或者以点开头(但点后面不能紧跟数字)
    • 不能以数字开头,不能以下划线开头

2.赋值

赋值:可以用 向左 <- 、向右-> 、等于号 = 来为变量分配值。

打印变量值:用 print() 或者 cat(),不同的是,前一个只能打印一个变量,后一个能打印多个变量,如:(注意两者输出的格式也不一样)

a <- c(1,2,3)
b <- c(4,5,6)
print(a)
#输出:
[1] 1 2 3

cat(a,b)
#输出:
1 2 3 4 5 6

3.变量的数据类型

在 R语言里,变量没有像c语言那样定义时就要声明号数据类型,而是根据分配到的R-对象来判断其数据类型,类似python,因此,R语言是动态类型的语言。

4.查找变量

要知道当前工作空间中已经定义了哪些变量,用 ls()函数查看,例如:

a <- c(1,2,3)
b <- c(4,5,6)
ab <- a + b 

print(ls())
#输出:
[1] "a" "b" "ab"

可以使用模式 pattern来匹配含有指定字符的变量:

print(ls(pattern = 'a'))   #注意,函数内的参数不能用 '<-' 和 '->'来赋值
[1] "a" "ab"

5.删除变量

使用 rm()函数对当前工作空间内的变量进行删除

a <- c(1,2,3)
b <- c(4,5,6)
ab <- a + b 

rm(ab)
print(ls())
#输出:
[1] "a" "b"           #变量ab被删除了



print(ab)              #这时试图打印ab的值出错:
#输出:
Error in print(ab): 找不到对象'ab'
Traceback:

1. print(ab)

删除多个变量:rm(变量1,变量2,...)

a <- c(1,2,3)
b <- c(4,5,6)
ab <- c(7,8,9)

rm(a,b)
print(ls())

#输出
[1] "ab"

删除所有的变量可以用语句 rm(list= ls())

rm(list = ls())
print(ls())

#输出:
character(0)


运算符

1.算数运算符

运算符描述举例
+两个向量相加print(c(1,2) + c(3,4)) 结果:[1] 4 6
-两个向量相减print(c(1,2) - c(3,4)) 结果:[1] -2 -2
*两个向量相乘print(c(1,2) * c(3,4)) 结果:[1] 3 8
/两个向量相除print(c(3,2) / c(3,4)) 结果:[1] 1.0 0.5
%%两个向量求余print(c(5,8) %% c(3,4)) 结果:[1] 2 0
%/%两个向量求商print(c(5,8) %/% c(3,4))结果:[1] 1 2
^乘方运算print(c(2,2) ^ c(3,4)) 结果:[1] 8 16

2.关系运算符

R语言关系运算符有以下6种:

>, <, =, >=, <=, ==, !=,含义与其他很多语言都一样

两个向量比较时将会对每个元素进行比较,例如:

a <- c(1,5,9)
b <- c(2,4,9)

print(a>b)   #输出:[1] FALSE  TRUE FALSE

print(a==b)  #输出:[1] FALSE FALSE  TRUE

print(a!=b)  #输出:[1]  TRUE  TRUE FALSE

3.逻辑运算符

  • R语言的逻辑运算符有:&(逻辑与), |(逻辑或), !(逻辑非)

  • 除此外,还有 &&(逻辑AND), ||(逻辑OR);

前3个运算符对两个向量的元素逐一进行逻辑运算,后2个只是对两个向量的第一个元素进行运算:

a <- c(0,1,0,FALSE)
b <- c(1,2,TRUE, FALSE)


print(a&b) #输出 [1] FALSE  TRUE FALSE FALSE
print(a|b) #输出 [1] TRUE  TRUE  TRUE FALSE
print(!a) #输出 [1] TRUE FALSE  TRUE  TRUE

print(a&&b) #输出 [1] FALSE
print(a||b) #输出 [1] TRUE

4.赋值运算符

左分配符:<-, <<-, =

右分配符:->, ->>

例如:

v1 <- c(1,2,3+1i)
v2 <<- c(1,2,3+1i)
v3 = c(1,2,3+1i)

c(1,2,3+1i) -> v4
c(1,2,3+1i) ->> v5

print(v1)
print(v2)
print(v3)
print(v4)
print(v5)

它们的输出结果相同,均为:[1] 1+0i 2+0i 3+1i

5.其他运算符

  • :(冒号运算符), 将会按顺序创建一系列数字,例如:
t <- 3:8
print(t)   #输出  [1] 3 4 5 6 7 8
  • %in% 用于判断元素是否属于向量,例如:
a <- 4
b <- 10
c <- 2:6

print(a %in% c)   #输出  [1] TRUE
print(b %in% c)   #输出  [1] FALSE
  • %*% 用于将矩阵与其转置矩阵相乘:
M = matrix(c(1,2,3,4,5,6,7,8),nrow = 2, ncol = 4, byrow = TRUE)
print(M)
#输出:

     [,1] [,2] [,3] [,4]
[1,]    1    2    3    4
[2,]    5    6    7    8
print(t(M))          #将矩阵转置
#输出:
     [,1] [,2]
[1,]    1    5
[2,]    2    6
[3,]    3    7
[4,]    4    8

相乘:(注意这可不是对应位置相乘,形状都不一样)

print(M %*% t(M))

#输出:
     [,1] [,2]
[1,]   30   70
[2,]   70  174
posted @ 2020-08-02 13:43  aJream  阅读(168)  评论(0编辑  收藏  举报