Readr 是一个很棒的软件包。但人们懒于指定每一列的数据类型。(例如,满分 30 分)。
检查解析失败可能会发现只有一列是关键问题。
请看下面
fname='c:/q/net/SnomedCT_RF2Release_INT_20160131/Full/Terminology/sct2_Concept_Full_INT_20160131.txt'
> snm<-read_delim(fname,delim='\t')
Warning: 4016 parsing failures.
row col expected actual
528950 id an integer 11000119105
528951 id an integer 11000119105
528952 id an integer 41000119109
528953 id an integer 61000119108
528954 id an integer 81000119104
...... ... .......... ...........
.See problems(...) for more details.
> probs<-problems(snm)
> table(probs$col)
id
4016
>
Run Code Online (Sandbox Code Playgroud)
如何指定数据集中一列(在本例中为列 id)的数据类型。(成为角色)
names(snm)
[1] "id" "effectiveTime" "active" "moduleId" "definitionStatusId"
Run Code Online (Sandbox Code Playgroud)
小智 5
通过col_types使用函数在参数中指定该列cols,其余部分将保持原样。例如,要将hp列指定为 中的字符mtcars,请使用“c”作为字符。
library(readr)\nwrite_delim(mtcars, path = "test.txt")\ntest <- read_delim("test.txt", delim = " ", col_types = cols(hp = "c"))\nstr(test)\n\nClasses \xe2\x80\x98tbl_df\xe2\x80\x99, \xe2\x80\x98tbl\xe2\x80\x99 and \'data.frame\': 32 obs. of 11 variables:\n $ mpg : num 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...\n $ cyl : int 6 6 4 6 8 6 8 4 4 6 ...\n $ disp: num 160 160 108 258 360 ...\n $ hp : chr "110" "110" "93" "110" ...\n $ drat: num 3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...\n $ wt : num 2.62 2.88 2.32 3.21 3.44 ...\n $ qsec: num 16.5 17 18.6 19.4 17 ...\n $ vs : int 0 0 1 1 0 1 0 1 1 1 ...\n $ am : int 1 1 1 0 0 0 0 0 0 0 ...\n $ gear: int 4 4 4 3 3 3 3 4 4 4 ...\n $ carb: int 4 4 1 1 2 1 4 2 2 4 ...\nRun Code Online (Sandbox Code Playgroud)\n\nreadr列类型小插图中的更多信息https://cran.r-project.org/web/packages/readr/vignettes/column-types.html