如何使用fwf將行向量(不是文件)讀入數據幀?來自文字數據(不是文件)的數據幀與R
現在,我可以想到兩種方法,但我真的覺得應該有更好的方法。任何想法是讚賞。
使用
data.frame()
+substring()
。它可以完成這項工作,但如果數據「不整齊」(就像下面的塊一樣),我不能簡單地推廣它。我從這裏得到答案:Read fixed width text file使用
write_lines()
和read_fwf()
from readr。我想避免寫一個外部文件。實際上,read_fwf()
似乎應該直接在文字數據上進行工作,但我無法使其工作:它始終將線條的字符串/矢量理解爲路徑。類似:write_lines(literaldata, "fwf_sample.txt") read_fwf("fwf_sample.txt", fwf_widths(rep(8, 12)))
數據樣本如下下方,導致錯誤的代碼。
literaldata <- "CHEXA 278375 2 419991 419976 418527 418528 434131 434116+ 420108 420107
CHEXA 278376 2 420028 420029 419994 419997 434168 434169+ 434134 434137
CHEXA 278377 2 419961 418516 418517 419956 434101 420119+ 420118 434096
CHEXA 278378 2 419965 418519 418520 419967 434105 420116+ 420115 434107
CHEXA 278379 2 419965 419984 420025 419971 434105 434124+ 434165 434111
CHEXA 278380 2 418521 419972 419967 418520 420114 434112+ 434107 420115"
library(readr)
lines<-read_lines(literaldata)
# The code above is just to get a reproducible example similar to the one I get in the data cleaning process
read_fwf(lines, fwf_widths(rep(8, 12)))
Error: 'CHEXA 278375 2 419991 419976 418527 418528 434131
434116+ 420108 420107CHEXA 278376 ...
在此先感謝
會'read_fwf(textConnection(literaldata),fwf_widths(REP(8,12)))'做工作? –
你可以發表代碼,其中'read_fwf()'錯誤的文字數據的路徑名?因爲它在你發佈的數據上工作得很好。 –