0

我正在寻找一种简单的方法来读取/写入基本数据框:

symbMat <- matrix("AJY", "6A", "6J", 0, 0, ncol=5)
colnames(symbMat) <- c("Symb1","Symb2","Symb3","lastVstamp","completedRows")
testFrame<-List(symbMat,matrix(c("date1","date2")))

所以 testFrame 现在看起来像

[[1]]
 Symb1 Symb2 Symb3 lastVstamp completedRows
[1,] "AJY" "6A"  "6J"  "0"        "0"          

[[2]]
     [,1]   
[1,] "date1"
[2,] "date2" 

所以问题是 read.table("MultiTable", header=TRUE) 给了我一个文件,将其全部视为一个 2x6 矩阵(最后一列的名称混乱)

"Symb1" "Symb2" "Symb3" "lastVstamp" "completedRows" "structure.c..date1....date2.....Dim...c.2L..1L.."
"1" "AJY" "6A" "6J" "0" "0" "date1"
"2" "AJY" "6A" "6J" "0" "0" "date2"

尽管

 install.packages("MASS")
 library(MASS)
 write.matrix(testFrame,file="MultiTable")

只是做一个文件

AJY, 6A , 6J , 0 , 0
日期1, 日期2

这显然是相当多的信息丢失。此外,没有 read.matrix() 所以我不知道那个函数的意义是什么

有任何想法吗?

4

1 回答 1

1

首先,testFrame不是一个data.frame。Adata.frame是 R 中非常特殊的对象类型。但是,这不会影响保存和重新加载数据的能力。有两组用于保存和加载数据的函数:save()/load()dump()/ source()。第一个创建二进制格式,第二个创建文本格式(尽管结构与屏幕上打印的不同)。

修复示例中的拼写错误:

symbMat <- matrix(c("AJY", "6A", "6J", 0, 0), ncol=5)
colnames(symbMat) <- c("Symb1","Symb2","Symb3","lastVstamp","completedRows")
testFrame<-list(symbMat,matrix(c("date1","date2")))

testFrame

> testFrame
[[1]]
     Symb1 Symb2 Symb3 lastVstamp completedRows
[1,] "AJY" "6A"  "6J"  "0"        "0"          

[[2]]
     [,1]   
[1,] "date1"
[2,] "date2"

save()load():_

save(testFrame, file="temp.RData")
load(file="temp.RData")

dump()source():_

dump("testFrame", file="temp.R")
source(file="temp.R")

注意的第一个参数dump()被引用。 temp.R那么是

testFrame <-
list(structure(c("AJY", "6A", "6J", "0", "0"), .Dim = c(1L, 5L
), .Dimnames = list(NULL, c("Symb1", "Symb2", "Symb3", "lastVstamp", 
"completedRows"))), structure(c("date1", "date2"), .Dim = c(2L, 
1L)))

它以相同的方式表示对象dput()

于 2013-04-24T18:59:01.650 回答