我需要将一些数据放入二进制格式的数据框中(作为由原始向量表示的单个条目)。这是一个例子:
#Record identifier
idx <- "identifier"
#The numeric data for a single record
aa <- c(5.99, 999, 5.99, 82.93)
#Convert data to double precision binary format
bin.aa <- writeBin(aa, raw(), endian = "little")
print(bin.aa)
[1] f6 28 5c 8f c2 f5 17 40 00 00 00 00 00 38 8f 40 f6 28 5c 8f c2 f5 17 40 ec 51 b8 1e 85 bb 54 40
到目前为止一切顺利。我有我想要的原始载体。现在我想创建一个包含两列和一行的数据框,其中包含(在第1列中)“标识符”和(在第2列中)原始向量bin.aa
。不幸的是,我的尝试不起作用:
> df <- data.frame(idx, bin.aa)
> head(df)
idx bin.aa
1 identifier f6
2 identifier 28
3 identifier 5c
4 identifier 8f
5 identifier c2
6 identifier f5
这肯定不是我想要的 - 我现在有32行,每行包含来自原始向量的单个字节。我知道我可以做我正在尝试的事情,因为我可以做与我在这里尝试相反的事情:即我可以使用readBin()
命令将原始向量读入单个数据帧条目。显然,我在这里遗漏了一些东西。
答案 0 :(得分:3)
您可以尝试:
df <- data.frame(idx, I(list(bin.aa)))
此处需要I
运算符,因为list(bin.aa)
只是一个元素的列表,默认情况下会在data.frame
调用中取消列出。