c() 与 paste()
c()函数: 将括号中的元素连接起来,并不创建向量
paste()函数: 连接括号中的元素
# c()
x <- c(1,2,3,4,5)
x
- 1
- 2
- 3
- 4
- 5
x <- c(1,2,3,4,5,6)
x[1:3]
y <- c('1','is','useful')
y
y[1:2]
x == y
- 1
- 2
- 3
- '1'
- 'is'
- 'useful'
- '1'
- 'is'
- TRUE
- FALSE
- FALSE
- FALSE
- FALSE
- FALSE
paste()
for (i in 1:9){
name <- paste('z',i,sep = '') #分隔符为空时,sep = ''可省略
assign(name,i:10)
}
z1
z2
z9
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 9
- 10
循环补齐
c(1,2,4)+c(6,0,9,20,22)
Warning message in c(1, 2, 4) + c(6, 0, 9, 20, 22):
"longer object length is not a multiple of shorter object length"
- 7
- 2
- 13
- 21
- 24
计算原理
计算原理:对于短向量与长向量相加,短向量一遍循环完了以后重新回到开始继续循环和长度较长的向量里面的元素相加,直到长向量里面的元素被相加完全,上例可以看做是c(1,2,4,1,2)+c(6,0,9,20,22)
第二个例子
x <- matrix(1:6,nrow = 3,ncol = 2)
x
print('————————')
x+c(1,2)
1 | 4 |
2 | 5 |
3 | 6 |
[1] "————————"
2 | 6 |
4 | 6 |
4 | 8 |
再次提醒读者,矩阵实际上是个长向量
。在这里,3×2的矩阵x是一个六元向量,它在R中一列一列的存储。换句话说,在存储方面,x与c(1,2,3,4,5,6)相同。我们把二元向量c(1,2)加到这个六元向量上,则所加的二元向量要再重复两次才能变成六个元素。换句话说,实际的运算如下:
(
1
4
2
5
3
6
)
\begin{pmatrix}1&4\\2&5\\3&6\\\end{pmatrix}
123456
+
(
1
2
2
1
1
2
)
\begin{pmatrix}1&2\\2&1\\1&2\\\end{pmatrix}
121212
:
: 运算符是seq()函数的一个特例 可用于生成相邻元素相差1或-1
seq(from = 1,to = 10)
seq(from = 3,to = 27, by = 3)
1 : 10
1 : -10
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 3
- 6
- 9
- 12
- 15
- 18
- 21
- 24
- 27
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 1
- 0
- -1
- -2
- -3
- -4
- -5
- -6
- -7
- -8
- -9
- -10
names() :用于获取或设置对象的名称
用法: names(x) <- value
m <- c(apple = 1,banana = 2,cat = 3,4)
m
n <- c('A','B','C','D')
names(n) <- c('apple','banana','','dog')
n
names(m)
print(m)
names(n)
print(n)
-
apple
- 1 banana
- 2 cat
- 3 4
- 4
-
apple
- 'A' banana
- 'B' 3
- 'C' dog
- 'D'
- 'apple'
- 'banana'
- 'cat'
- ''
apple banana cat
1 2 3 4
- 'apple'
- 'banana'
- ''
- 'dog'
apple banana dog
"A" "B" "C" "D"