Menu
CoddyTech

拆分与拼接

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

strsplit(x, split) 会在每个分隔符处切分字符串。它会为每个输入字符串返回一个列表,其中包含一个字符向量,因此可以使用 [[1]] 获取单个字符串切分后的各部分。

csv <- "red,green,blue"
parts <- strsplit(csv, ",")[[1]]
print(parts)
print(length(parts))

输出:

[1] "red"   "green" "blue" 
[1] 3

paste() 的作用正好相反。使用 collapse 时,它会将一个向量中的元素连接成一个字符串,并在它们之间插入 collapse 文本。sep 则会逐个元素地插入到各个参数之间。

words <- c("one", "two", "three")
print(paste(words, collapse = "-"))
print(paste(words, 1:3, sep = "_"))

输出:

[1] "one-two-three"
[1] "one_1"   "two_2"   "three_3"

输入的文本通常会在分隔符周围带有空格。trimws() 会移除每个元素开头和结尾的空格:

raw <- "  apples , pears,plums  "
items <- trimws(strsplit(raw, ",")[[1]])
print(items)
print(paste(rev(items), collapse = " | "))

输出:

[1] "apples" "pears"  "plums" 
[1] "plums | pears | apples"

对向量使用 strsplit() 会为每个字符串返回一个列表元素,因此每个输入行都会保留自己的各个部分:

lines <- c("a,b", "c,d,e")
parts <- strsplit(lines, ",")
print(length(parts))
print(parts[[2]])

输出:

[1] 2
[1] "c" "d" "e"
challenge icon

挑战

简单

完成 hashtags(line)。line 中包含由逗号分隔的标签,标签周围可能有空格。返回一个字符串,其中每个标签前面都加上 #,并用单个空格分隔: r, data ,stats 会变成 #r #data #stats。

提供的代码会读取这一行并打印返回值。

亲手试试

hashtags <- function(line) {
  # 在这里编写你的代码
  line
}

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

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

逻辑与流程中的所有课

自己练习: R 在线编译器