我的.txt数据集如下所示:
perms ['AC', 'AT', 'AG', 'AN', 'CA', 'CT', 'CG', 'CN', 'TA', 'TC', 'TG', 'TN', 'GA', 'GC', 'GT', 'GN', 'NA', 'NC', 'NT', 'NG', 'AA', 'CC', 'TT', 'GG', 'NN'] link [11413851, 16930583, 16197703, 1085, 16533859, 16218116, 2309941, 572, 14414084, 13609414, 16552907, 1015, 13594224, 10038778, 11427660, 480, 1055, 445, 1061, 591, 15557040, 9822185, 15583349, 9815249, 11653456]
此数据集中有两个变量:' perms'并且'链接'。如何在R中读取此数据集?我不能使用蛮力,因为我的样本的确切大小太大(其中一些有n> 100 000)。但结构完全相同。提前谢谢!
答案 0 :(得分:2)
我们使用readLines
读取数据集,按空格分隔后跟[
或]
,后跟零或更多空格。创建逻辑索引('ind'),对拆分数据进行子集化,循环,scan
以获取单个元素,并转换为'data.frame'。
lines <- readLines("file.txt")
lines1 <- strsplit(lines, "\\s*\\[|\\]\\s*")[[1]]
ind <- c(TRUE, FALSE)
data.frame(setNames(lapply(lines1[!ind], function(x)
trimws(scan(text=x, what = "", sep=",", quiet=TRUE))), lines1[ind]))
# perms link
#1 AC 11413851
#2 AT 16930583
#3 AG 16197703
#4 AN 1085
#5 CA 16533859
#6 CT 16218116
#7 CG 2309941
#8 CN 572
#9 TA 14414084
#10 TC 13609414
#11 TG 16552907
#12 TN 1015
#13 GA 13594224
#14 GC 10038778
#15 GT 11427660
#16 GN 480
#17 NA 1055
#18 NC 445
#19 NT 1061
#20 NG 591
#21 AA 15557040
#22 CC 9822185
#23 TT 15583349
#24 GG 9815249
#25 NN 11653456