将非分隔符的.txt文件读入R

3
我收到了一个二进制数据集,其中包含虚构测试的正确/错误答案。 我要将这些数据导入R以进行课程分析,但是我在导入数据集时遇到了困难,因为R将每行中的值更改为一个大数。我最初的想法是缺少定界字符导致了这个问题。
下面是.txt文件的前几行:
11011111110001100000001110000010 11111100110000001010001000100000 00001011110000000000000010001000 11110101000101100111000100000110 10000000100000100101000000101000 11111110001000001001000010000000
当我将这些行读入R时,我会收到:
1.101111e+31 1.111110e+31 1.011110e+27 1.111010e+31 1.000000e+31 1.111111e+31
而不是表示测试结果的01行。

你是如何导入数据的?readLines()通常对我很有效,它将输入保持为字符而不是转换为数字。 - Tony Breyal
我一直在使用read.table,我相信这是导致将行转换为单个值时出现问题的原因。 - Daniel
2个回答

10

我猜想每一行都是一个观察结果?例如,每一行包含学生32个答案的正确性。如果是这样的话,请尝试使用read.fwf函数:

my.data <- "11011111110001100000001110000010
11111100110000001010001000100000
00001011110000000000000010001000
11110101000101100111000100000110
10000000100000100101000000101000
11111110001000001001000010000000"

test.results <- read.fwf(textConnection(my.data), widths=rep(1, 32))

test.results[1, ]
# V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 V15 V16 V17 V18 V19 V20 V21 V22 V23 V24
# 1  1  1  0  1  1  1  1  1  1   1   0   0   0   1   1   0   0   0   0   0   0   0   1   1
# V25 V26 V27 V28 V29 V30 V31 V32
# 1   1   0   0   0   0   0   1   0
如果情况不是这样的话,您应该提供更多信息。

read.fwf 看起来对我拥有的其他数据非常有帮助 - 谢谢您分享这个技巧。 - Daniel
@SimonO101,是的,它在工具箱的尘土飞扬的后角落里,但我知道有一些更大或更老的数据集喜欢固定宽度格式。给我分隔符或者让我死! - Peyton

2

您需要指定数据为字符类型。 R 很聪明,会将其视为数字。在 read.table 中使用 colClasses...

read.table( text = "11011111110001100000001110000010
11111100110000001010001000100000
00001011110000000000000010001000
11110101000101100111000100000110
10000000100000100101000000101000
11111110001000001001000010000000" , colClasses = "character" , h = FALSE )

#                                V1
#1 11011111110001100000001110000010
#2 11111100110000001010001000100000
#3 00001011110000000000000010001000
#4 11110101000101100111000100000110
#5 10000000100000100101000000101000
#6 11111110001000001001000010000000

非常好 - 我的大部分问题似乎源于寻找一种将列分开而不是将值视为字符处理的方法。 - Daniel
如果你想在读取后轻松地拆分字符,可以使用以下代码:do.call(rbind, sapply(df, strsplit, "")),假设你的数据框名称为df。希望这能帮到你。 - Simon O'Hanlon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接