parse_*() 函数族。
这些函数接受一个字符向量,并返回一个特定向量,如逻辑、整数或日期向量:
str(parse_logical(c("TRUE", "FALSE", "NA")))
#> logi [1:3] TRUE FALSE NA
str(parse_integer(c("1", "2", "3")))
#> int [1:3] 1 2 3
str(parse_date(c("2010-01-01", "1979-10-14")))
#> Date[1:2], format: "2010-01-01" "1979-10-14"
和 tidyverse 中的所有函数一样, parse_*() 函数族的用法是一致的。第一个参数是需要解
析的字符向量, na 参数设定了哪些字符串应该当作缺失值来处理:
parse_integer(c("1", "231", ".", "456"), na = ".")
#> [1] 1 231 NA 456
如果解析失败,你会收到一条警告:
x <- parse_integer(c("123", "345", "abc", "123.45"))
#> Warning: 2 parsing failures.
#> row col expected actual
#> 3 -- an integer abc#> 4 -- no trailing characters .45解析失败的值在输出中是以缺失值的形式存在的:x#> [1] 123 345 NA NA#> attr(,"problems")#> # A tibble: 2 × 4
#> row col expected actual#> <int> <int> <chr> <chr>#> 1 3 NA an integer abc
#> 2 4 NA no trailing characters .45
如果解析失败的值很多,那么就应该使用 problems() 函数来获取完整的失败信息集合。这
个函数会返回一个 tibble,你可以使用 dplyr 包来进行处理:
problems(x)
#> # A tibble: 2 × 4
#> row col expected actual#> <int> <int> <chr> <chr>#> 1 3 NA an integer abc
#> 2 4 NA no trailing characters .45
在解析函数的使用方面,最重要的是要知道有哪些解析函数,以及每种解析函数用来处理
哪种类型的输入。具体来说,重要的解析函数有 8 种。
• parse_logical() 和 parse_integer() 函数分别解析逻辑值和整数。因为这两个解析函数
基本不会出现问题,所以我们不再进行更多介绍。
• parse_double() 是严格的数值型解析函数, parse_number() 则是灵活的数值型解析函数。
这两个函数要比你预想的更复杂,因为世界各地书写数值的方式不尽相同。
• parse_character() 函数似乎太过简单,甚至没必要存在。但一个棘手的问题使得这个
函数变得非常重要:字符编码。
• parse_factor() 函数可以创建因子, R 使用这种数据结构来表示分类变量,该变量具有
固定数目的已知值。
• parse_datetime()、 parse_date() 和 parse_time() 函数可以解析不同类型的日期和时间。
它们是最复杂的,因为有太多不同的日期书写形式。
暂无数据