假设我有一个包含3列的文件。前两列是矩阵的索引(行,列)。第三个是我需要存储在矩阵中的值。该文件的前5行如下所示。
V1 V2 V3
[1,] 13 14 4950
[2,] 20 50 4949
[3,] 22 98 4948
[4,] 30 58 4947
[5,] 43 48 4946
假设我使用以下命令读取此文件:
idx<-as.matrix(read.table("data.txt"))
我创建了一个矩阵b并使用此代码将其存储在那里,但它似乎不起作用。我找到了一个使用for循环的工作,似乎工作正常,但需要很长时间。
b<-matrix(0,100,100)
b[idx[,1],idx[,2]]<-idx[,3]
当我尝试以下操作时,我得到了:
> b[13,14]
[1] 126
> b[22,98]
[1] 115
与第三列不匹配。对不起,如果这是一个基本问题。这里发生了什么?
答案 0 :(得分:2)
您可能会考虑scan
来阅读矩阵。结果,它输出一条消息,其中读取的行数。然后你可以构建你的新矩阵。
> s <- scan("data.txt")
# Read 15 items
> m <- matrix(s, 15/3, 3, byrow = TRUE)
> b <- matrix(0, 100, 100)
> b[ m[, 1], m[, 2] ] <- m[, 3]
> b[13, 14]
# [1] 4950
> b[22, 98]
# [1] 4948
答案 1 :(得分:0)
好的,弄清楚发生了什么 - 我需要设置&#34; stringsASFactors = F&#34;阅读文件时,一切都像魅力一样。我不确定为什么会这样......但确实如此。