R语言学习——最全R语言向量的生成与命名

目录

  • 1.向量的生成
    • 1.1基础方法
      • 方法1:`c`函数
      • 方法2:使用`:`符号生成向量
    • 1.2 常用向量处理方法
      • 方法3:`seq()`函数
      • 方法4:`rep()`函数
      • 方法5:`paste`函数
    • 1.3 生成随机向量
      • 方法6:`sample`函数——随机整数
      • 方法7:`runif`函数——均匀分布(Uniform)
      • 方法8:`rnorm`函数——正态分布(Normal)
      • 方法9:`rpois`函数——泊松分布(Poisson)
      • 方法10:`rfunc()`函数——自制函数
  • 2. 向量的命名
    • 方法1:赋值的时候直接命名
    • 方法2:利用`names()`函数
  • 练习

首先需要说明的是,在R语言中向量和列表是不一样的,向量中每一个元素的类型都是一样的,而列表反之,这里的列表与Python中的列表有几分相似。以下是分类情况:

同样类型的数据 不同类型的数据
一维 向量(vector) 列表(lists)
二维 矩阵(matrics) 数据框(dataframe)
N维 数组(array)

1.向量的生成

R语言中生成常用向量主要有这么几个方法:

1.1基础方法

方法1:c函数

我们知道,向量里面的元素应该要是同类型的,那么,如果在生成的时候我们没有用同类型数据会怎么样呢?举个例子:

######## 第一种情况
x <- c('abc',123)
x

# 输出
"abc" "123"

####### 第二种情况
x <- c(123,False)
x

# 输出
123 0

####### 第三种情况
x <- c("abc", 123, False)
x

# 输出
"abc" "123" "False"

观察以上代码,结合字符型、数值型、逻辑型的存储空间大小最大者为字符型,我们可以得到结论:当数据类型不同时,会将数据向需要存储空间多的类型转变,这就好比胖子可以穿瘦子的衣服,而反之不可。

方法2:使用:符号生成向量

这种方法比较简单,不过多解释,见例子:

######
x <- 1:3
x

# 结果
1 2 3

######
x <- 3:1

# 结果
3 2 1

这种方法生成的向量是等1步长的,那么如果要生成不等步长该怎么做呢?可以使用以下的方法

1.2 常用向量处理方法

方法3:seq()函数

# 使用方法
seq(from, to, by=) 或 seq(from, to, length=)
其中:
	from表示序列的开始值
	to表示序列的终止值
	by表示步长,如果没有设定,默认值是by=1
	length指的是序列的总长度,也可以写成length.out

# 例子1
seq(1,10,by=2)
[1]1 3 5 7 9

# 例子2
seq(1,10,length=5)
[1]1.00 3.25 5.50 7.75 10.00

方法4:rep()函数

这个函数对应的英语单词为:repetition, n.重复

# 使用方法
rep(data,times,each=)
其中:
	data表示需要重复的元素
	times表示重复次数,是data整体重复几遍
	each表示每个元素重复的次数,是单个元素重复几遍

# 例子1
rep(1:2,3)
[1]1 2 1 2 1 2

# 例子2
rep(1:2,each=3)
[1]1 1 1 2 2 2

方法5:paste函数

# 使用方法
paste(A,B,sep="")
作用:将A字符串和B字符串连接成新字符串,也可以将两个以上的字符串连接sep的默认值是一个空格

# 例子
paste("jinrong","1401","sep"="")
[1]"jinrong1401"

paste("jinrong","1401")
[1]"jinrong 1401"

1.3 生成随机向量

方法6:sample函数——随机整数

# 使用方法
sample(x,size,replace=False,prob=NULL)
作用:产生size个随机整数,数据范围为x

# 例子
x <- sample(1:100,3)  # 在1到100里面随机生成3个整数
[1]64 57 26

方法7:runif函数——均匀分布(Uniform)

使用方法:
runif(size,min=,max=)
作用:生成minmax之间的size个服从均匀分布的随机数

例子:
x <- runif(3,0,1)
[1]0.63412778 0.88305513 0.82242222

方法8:rnorm函数——正态分布(Normal)

使用方法:rnorm(size,mean=,std=)
作用:生成size个服从N(mean,std)的随机数

方法9:rpois函数——泊松分布(Poisson)

使用方法:rpois(size,lamda)
作用:生成参数为lamda的size各服从泊松分布的随机数

方法10:rfunc()函数——自制函数

使用方法:rfunc(size,p1,p2,...)
作用:func为概率分布函数,size为生成随机数的个数,p1,p2,…为需要的参数

2. 向量的命名

方法1:赋值的时候直接命名

x <- c(x=3, y=4, z=5)

# 输出
x y z
3 4 5

这种方法相当于设置了一种映射,可以用于批量命名变量,非常好用,在这里就不多说了

如果我们要给变量改名怎么办呢?可以考虑使用names()函数

方法2:利用names()函数

# 使用方法:
names(x) <- value
# 例子
names(x)[2] <- "U"
# 输出
x U z
3 4 5

练习

问题:如何使用上文提到的方法生成如下向量
“金融1701甲” “金融1701乙” “金融1702甲” “金融1702乙”
“金融1703甲” “金融1703乙” “金融1704甲” “金融1704乙”

# 参考代码1:
a <- "金融"
b <- 1701:1704
c <- c("甲","乙")

bc = rep(0,length(b)*length(c))
i = 1
for (year in b){
  bc[i] = paste(a,paste(year,"甲",sep=""),sep="")
  bc[i+1] = paste(a,paste(year,"乙",sep=""),sep="")
  i = i+2
}

# 参考代码2:
x <- paste("金融",rep(1701:1704,each=2),c("甲","乙"),sep="")

# 输出
[1] "金融1701甲" "金融1701乙" "金融1702甲" "金融1702乙"
[5] "金融1703甲" "金融1703乙" "金融1704甲" "金融1704乙"

你可能感兴趣的:(R语言随笔)