2

您好,我正在分析一些数据并尝试使用包含必须以这种方式格式化的对象的包。我从未见过这种格式,也不知道如何生成它。当我在 R 中调用对象时,这是一个奇怪的对象:

> a
     A      B          C            D         E          F 
0.00000000 1.34529412 0.31571429 1.26327103 0.32615385 1.12585586 

以下是此对象 a 的一些属性:

> str(a)
 Named num [1:6] 0 1.345 0.316 1.263 0.326 ...
 - attr(*, "names")= chr [1:6] "" "A" "B" "C" ...

> class(a)
[1] "numeric"

我可以使用标准的 write.csv 命令将“a”写入 .csv 格式,它可以很好地用两列格式化,一列是字符,另一列是数字。当我尝试使用 read.csv 在 R 中读回它时,它会正确地将其作为具有两列的数据框返回。但是,我尝试使用的函数不喜欢数据框格式,而是更喜欢“a”的任何格式。

因此,可以采用示例数据集,例如:

> L <- c("A","B","C","D","E","F")
> R <- c(0.00000000,1.34529412,0.31571429,1.26327103,0.32615385,1.12585586 )
> T <- list(L=L,R=R)
> Example <- as.data.frame(T)
> Example
  L     R
1 A 0.00000000
2 B 1.34529412
3 C 0.31571429
4 D 1.26327103
5 E 0.32615385
6 F 1.12585586 

并把它变回这个?

     A      B          C            D         E          F 
0.00000000 1.34529412 0.31571429 1.26327103 0.32615385 1.12585586 

有这些属性?

  > str(a)
     Named num [1:6] 0 1.345 0.316 1.263 0.326 ...
     - attr(*, "names")= chr [1:6] "" "A" "B" "C" ...

    > class(a)
    [1] "numeric"

感谢您的帮助!

4

3 回答 3

4

我认为这是您正在寻找的东西:

newExample <- Example$R
names(newExample) <- Example$L
于 2011-07-06T00:15:27.897 回答
3

您应该学习使用 save(),而不是使用 write.table() 或 write.csv() 写入磁盘。然后,您可以放心,当您重新加载()对象时,您将获得正确构造的副本。如果需要以 ASCII 可读格式查看对象,可以使用 dump()。

于 2011-07-06T00:42:53.473 回答
0
R <- t(Example$R)
L <- t(Example$L)
names(R) <- L
str(R)

num [1, 1:6] 0 1.345 0.316 1.263 0.326 ... - attr(*, "names")= chr [1:6] "A" "B" "C" "D" ...

于 2013-11-04T07:57:10.447 回答