Menu
CoddyTech

创建数据框

本课属于 Coddy R 学习旅程的“逻辑与流程”单元。第 42 课,共 64 课。

数据框是 R 中的表:每一列都是一个具有自身类型的向量,所有列的长度都相同,每行有一个值。data.frame() 根据命名向量创建数据框:

people <- data.frame(
  name = c("ada", "bo", "cy"),
  age = c(36, 22, 41),
  city = c("london", "paris", "rome")
)
print(people)

输出:

  name age   city
1  ada  36 london
2   bo  22  paris
3   cy  41   rome

nrow() 和 ncol() 会给出大小,names() 会列出各列。与矩阵不同,各列可以保存不同类型的数据:这里有文本和数字。

people <- data.frame(
  name = c("ada", "bo", "cy"),
  age = c(36, 22, 41),
  city = c("london", "paris", "rome")
)
print(nrow(people))
print(ncol(people))
print(names(people))

输出:

[1] 3
[1] 3
[1] "name" "age"  "city"

str() 会显示每一列的类型和前几个值,这是一种快速检查数据框内容的方法:

people <- data.frame(
  name = c("ada", "bo", "cy"),
  age = c(36, 22, 41),
  city = c("london", "paris", "rome")
)
str(people)

输出:

'data.frame':	3 obs. of  3 variables:
 $ name: chr  "ada" "bo" "cy"
 $ age : num  36 22 41
 $ city: chr  "london" "paris" "rome"

数据通常以文本形式到达,每行一条记录。read.csv(text = lines) 会将这些行转换为数据框,把第一行用作列名,并自动转换数字:

lines <- c("item,qty", "tea,2", "jam,5")
orders <- read.csv(text = lines)
print(orders)
print(sum(orders$qty))

输出:

  item qty
1  tea   2
2  jam   5
[1] 7
challenge icon

挑战

简单

补全 table_info(names, ages)。用这两个向量创建一个包含 name 和 age 列的数据框。返回三行:Rows: 后面是行数,Columns: 后面是用 , 连接的列名,Oldest: 后面是年龄最大的那一行中的姓名(如果年龄并列,则取第一个)。

提供的代码会将姓名和年龄作为两行逗号分隔的数据读入,并打印返回的每一行。

亲手试试

table_info <- function(names, ages) {
  # 在这里编写你的代码
  character(0)
}

# 提供的输入/输出代码:保持原样
input <- suppressWarnings(readLines(file("stdin")))
cat(table_info(strsplit(input[1], ",")[[1]], as.numeric(strsplit(input[2], ",")[[1]])), sep = "\n")
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

逻辑与流程中的所有课

自己练习: R 在线编译器