本文参考菜鸟教程整理了factor() 、list()、frame()的使用:
# R 因子
# 因子用于存储不同类别的数据类型,例如人的性别有男和女两个类别,年龄来分可以有未成年人和成年人。
#
# R 语言创建因子使用 factor() 函数,向量作为输入参数。
# factor() 函数语法格式:
factor(x = character(), levels, labels = levels,
exclude = NA, ordered = is.ordered(x), nmax = NA)
# 参数说明:
#
# x:向量。
# levels:指定各水平值, 不指定时由x的不同值来求得。
# labels:水平的标签, 不指定时用各水平值的对应字符串。
# exclude:排除的字符。
# ordered:逻辑值,用于指定水平是否有序。
# nmax:水平的上限数量。
# 以下实例把字符型向量转换成因子:
x <- c("男", "女", "男", "男", "女")
sex <- factor(x)
print(sex)
print(is.factor(sex))
# 以下实例设置因子水平为 c('男','女'):
x <- c("男", "女", "男", "男", "女",levels=c('男','女'))
sex <- factor(x)
print(sex)
print(is.factor(sex))
# 因子水平标签
# 接下来我们使用 labels 参数为每个因子水平添加标签,labels 参数的字符顺序,要和 levels 参数的字符顺序保持一致,例如:
# sex=factor(c('f','m','f','f','m'),levels=c('f','m'),labels=c('female','male'),ordered=TRUE)
# print(sex)
# 生成因子水平
# 我们可以使用 gl() 函数来生成因子水平,语法格式如下
# 生成因子水平
# 我们可以使用 gl() 函数来生成因子水平,语法格式如下
gl(n, k, length = n*k, labels = seq_len(n), ordered = FALSE)
# 参数说明:
#
# n: 设置 level 的个数
# k: 设置每个 level 重复的次数
# length: 设置长度
# labels: 设置 level 的值
# ordered: 设置是否 level 是排列好顺序的,布尔值。
v <- gl(3, 4, labels = c("Google", "Runoob","Taobao"))
print(v)
# R 语言数据框
# data.frame(…, row.names = NULL, check.rows = FALSE,
# check.names = TRUE, fix.empty.names = TRUE,
# stringsAsFactors = default.stringsAsFactors())
# …: 列向量,可以是任何类型(字符型、数值型、逻辑型),一般以 tag = value 的形式表示,也可以是 value。
# row.names: 行名,默认为 NULL,可以设置为单个数字、字符串或字符串和数字的向量。
# check.rows: 检测行的名称和长度是否一致。
# check.names: 检测数据框的变量名是否合法。
# fix.empty.names: 设置未命名的参数是否自动设置名字。
# stringsAsFactors: 布尔值,字符是否转换为因子,factory-fresh 的默认值是 TRUE,可以通过设置选项(stringsAsFactors=FALSE)来修改。
table = data.frame(
姓名 = c("张三", "李四"),
工号 = c("001","002"),
月薪 = c(1000, 2000)
)
print(table) # 查看 table 数据
# 获取数据结构
str(table)
# 显示概要
print(summary(table))
# 提取指定的列
result <- data.frame(table$姓名,table$月薪)
print(result)
print(table)
# 提取前面两行
print("---输出前面两行----")
result <- table[1:2,]
print(result)
table = data.frame(
姓名 = c("张三", "李四","王五"),
工号 = c("001","002","003"),
月薪 = c(1000, 2000,3000)
)
# 读取第 2 、3 行的第 1 、2 列数据:
result <- table[c(2,3),c(1,2)]
print(result)
# 扩展数据框
table = data.frame(
姓名 = c("张三", "李四","王五"),
工号 = c("001","002","003"),
月薪 = c(1000, 2000,3000)
)
# 添加部门列
table$部门 <- c("运营","技术","编辑")
print(table)
# 我们可以使用 cbind() 函数将多个向量合成一个数据框:
# 创建向量
sites <- c("Google","Runoob","Taobao")
likes <- c(222,111,123)
url <- c("www.google.com","www.runoob.com","www.taobao.com")
# 将向量组合成数据框
addresses <- cbind(sites,likes,url)
# 查看数据框
print(addresses)
# 如果要对两个数据框进行合并可以使用 rbind() 函数
table = data.frame(
姓名 = c("张三", "李四","王五"),
工号 = c("001","002","003"),
月薪 = c(1000, 2000,3000)
)
newtable = data.frame(
姓名 = c("小明", "小白"),
工号 = c("101","102"),
月薪 = c(5000, 7000)
)
# 合并两个数据框
result <- rbind(table,newtable)
print(result)
# R 列表
# 列表是 R 语言的对象集合,可以用来保存不同类型的数据,可以是数字、字符串、向量、另一个列表等,当然还可以包含矩阵和函数。
#
# R 语言创建列表使用 list() 函数。
#
# 如下实例,我们创建一个列表,包含了字符串、向量和数字:
list_data <- list("runoob", "google", c(11,22,33), 123, 51.23, 119.1)
print(list_data)
# 我们可以使用 names() 函数给列表的元素命名:
# 列表包含向量、矩阵、列表
list_data <- list(c("Google","Runoob","Taobao"), matrix(c(1,2,3,4,5,6), nrow = 2),
list("runoob",12.3))
# 给列表元素设置名字
names(list_data) <- c("Sites", "Numbers", "Lists")
# 显示列表
print(list_data)
访问列表
# 列表包含向量、矩阵、列表
list_data <- list(c("Google","Runoob","Taobao"), matrix(c(1,2,3,4,5,6), nrow = 2),
list("runoob",12.3))
# 给列表元素设置名字
names(list_data) <- c("Sites", "Numbers", "Lists")
# 显示列表
print(list_data[1])
# 访问列表的第三个元素
print(list_data[3])
# 访问第一个向量元素
# print(list_data$Numbers)
# 操作列表元素
# 我们可以对列表进行添加、删除、更新的操作,如下实例:
# 列表包含向量、矩阵、列表
list_data <- list(c("Google","Runoob","Taobao"), matrix(c(1,2,3,4,5,6), nrow = 2),
list("runoob",12.3))
# 给列表元素设置名字
names(list_data) <- c("Sites", "Numbers", "Lists")
# 添加元素
list_data[4] <- "新元素"
print(list_data[4])
# 删除元素
list_data[4] <- NULL
# 删除后输出为 NULL
print(list_data[4])
# 更新元素
list_data[3] <- "我替换来第三个元素"
print(list_data[3])
# 合并列表
# 我们可以使用 c() 函数将多个列表合并为一个列表:
# 创建两个列表
list1 <- list(1,2,3)
list2 <- list("Google","Runoob","Taobao")
# 合并列表
merged.list <- c(list1,list2)
# 显示合并后的列表
print(merged.list)
列表转换为向量
# 创建列表
list1 <- list(1:5)
print(list1)
list2 <-list(10:14)
print(list2)
# 转换为向量
v1 <- unlist(list1)
v2 <- unlist(list2)
print(v1)
print(v2)
# 两个向量相加
result <- v1+v2
print(result)
网友评论