我正在尝试做一些非常简单的事情并且正在努力做到这一点。我有一组存储在制表符分隔文件中的数据。在此制表符分隔的文件中,缺少值。当我尝试调用具有制表符分隔值的列时,将调用错误的列。我相信这是因为第三列标题行之后的第一个值(我试图提取的那个)是一个缺少值的列。这是我的数据示例(我的实际数据是36000行,但所有格式都相同):
x y z
230.125 49.875 0
230.375 49.875 0
230.625 49.875 0
261.125 49.875 0
261.375 49.875 0
251.625 48.875 4.38619211912155
251.875 48.875 3.70883572995663
252.125 48.875 3.2566264629364
252.375 48.875 3.00820730924606
254.125 48.875 7.88962166309357
254.375 48.875 8.50787222385406
254.625 48.875 8.95758244991303
254.875 48.875 9.47213044166565
255.125 48.875 9.96883320808411
255.375 48.875 10.4400730609894
255.625 48.875 10.6357674837112
255.875 48.875 9.81607600450516
274.125 48.875 0
274.375 48.875 0
274.625 48.875 0
274.875 48.875 0
275.125 48.875 0
275.375 48.875 0
275.625 48.875 0
275.875 48.875 0
276.125 48.875 0
我正在尝试提取第三列并将其附加到另一个矩阵以便稍后进行计算(这将针对许多相同类型的文件进行)。这就是我在这里初始化第二个矩阵的原因。
这是我的代码:
library(data.table)
temp <- c()
matrix_prelim <- matrix(nrow = 36000)
temp <- as.matrix(read.table("/myfilepath/example.txt", sep="\t", fill = TRUE. na.strings = "", header=TRUE)
matrix_prelim <- cbind(matrix_prelim, temp[[3]])
然后打印:
head(matrix_prelim)
的产率:
[,1] [,2]
[1,] NA 230.625
[2,] NA 230.625
[3,] NA 230.625
[4,] NA 230.625
[5,] NA 230.625
[6,] NA 230.625
当我想要的是(知道没有内容初始化矩阵会给我一列NA,这没问题):
[,1] [,2]
[1,] NA 0
[2,] NA 0
[3,] NA 0
[4,] NA 0
[5,] NA 0
[6,] NA 4.38619211912155
我完全不知道我做错了什么。任何帮助将不胜感激。
谢谢!
编辑:我应该注意到我已经尝试将na.strings参数更改为&#34; &#34;,完全取出na.strings参数,尝试使用fread并抓住第三列(这根本就不起作用),并尝试设置headers = FALSE。
答案 0 :(得分:0)
虽然您已拨打library(data.table)
,但实际上并未将数据转换为data.table
格式。相反,您的数据很可能是data.frame
,这很好。
无需初始化矩阵以将第3列存储为单独的向量。尝试这样的事情:
temp <- as.matrix(read.table("/myfilepath/example.txt", sep="\t", fill = TRUE. na.strings = "", header=TRUE)
matrix_prelim <- temp[3]
让我知道这是否有效。