我正在使用data.table包从磁盘读取(fread)更大的文件。读取data.table看起来像
C1, C2, C3
R1 0.5, 0.9, 0.1
R2 0.7, 0.1, 0,1
R3 0.2, 0.3, 0,5
但是,对于扫描问题,我希望以下列形式提供它们:
R1, C1, 0.5
R1, C2, 0.9
R1, C3, 0.1
R2, C1, 0.7
那么,有没有一种有效的方法呢?当使用rbind,cbind等时,这需要永远。 我正在阅读的文件有~500k行~100列。
致以最诚挚的问候,
马里奥
答案 0 :(得分:2)
如果需要,保留线条:
从dataframe开始:
dt = data.frame(c1=c(0.5,0.7,0.2), c2=c(0.9,0.1,0.3), c3=c(0.1,0.1,0.5))
row.names(dt) = c("R1","R2","R3")
melt(as.matrix(dt))
从data.table开始,你不能只获得一行:
dt = data.frame(c1=c(0.5,0.7,0.2), c2=c(0.9,0.1,0.3), c3=c(0.1,0.1,0.5))
melt(as.matrix(dt))