Chapter 6 functions

函数是R语言的一级公民,只要有响应的地方都是有函数在执行。

6.1 函数的定义

6.2 返回函数的函数

6.3 df 相关函数

6.3.1 横向合并表格(cbind/merge)

# 如果合并依赖的列没有重复值
course=data.frame(
  id=c(101,102,100),
  course=c("math", "english", "IT"),
  row.names =paste0("v1_", 1:3)
)
course
##       id  course
## v1_1 101    math
## v1_2 102 english
## v1_3 100      IT
score=data.frame(
  sid=c(1,2,2),
  cid=c(100,101,102),
  value=c(100,91,82),
  row.names =paste0("v2_", 1:3)
)
score
##      sid cid value
## v2_1   1 100   100
## v2_2   2 101    91
## v2_3   2 102    82
# 如果不做检查校验,直接简单拼接
cbind(course, score)
##       id  course sid cid value
## v1_1 101    math   1 100   100
## v1_2 102 english   2 101    91
## v1_3 100      IT   2 102    82
# 如果需要按某一列合并,比如学生不同科目的成绩
m1=merge(course, score, by.x="id", by.y="cid"); m1 # 基于没重复值的列 merge后,行数不变,失去 rowname
##    id  course sid value
## 1 100      IT   1   100
## 2 101    math   2    91
## 3 102 english   2    82
# 如果有重复值,行数会变多,返回的是基于该同值的行的各种组合
student=data.frame(
  id=c(1,2, 1), #身份证
  name=c("Jack", "Robin", "Jack2") #教职员工考的在职研究生
)
student
##   id  name
## 1  1  Jack
## 2  2 Robin
## 3  1 Jack2
merge(student, score, by.x='id', by.y="sid")
##   id  name cid value
## 1  1  Jack 100   100
## 2  1 Jack2 100   100
## 3  2 Robin 101    91
## 4  2 Robin 102    82