从列表转换为数字?

时间:2014-01-22 11:27:14

标签: r

我有一个文件:

file<-read.csv("https://dl.dropboxusercontent.com/u/22681355/file.csv",head=T)

mode(file)
"list"

file<- file[,-1:2]

我想将文件转换为数字模式,以使内置列名消失。这有可能以某种方式吗?

我的目标是当我在文件中列出一些元素时,例如file[,2:4]然后它应该只显示数字而不是列名。

1 个答案:

答案 0 :(得分:0)

由于您的数据全部为数字(除了您要删除的前两列),您可以轻松地将数据框转换为数组:

x <- as.matrix(file[, -2:-1])
head(x)

            a1        b1        c1        d1        e1        f1        g1        h1        i1
[1,] 100.00000 100.00000 100.00000 100.00000 100.00000 100.00000 100.00000 100.00000 100.00000
[2,]  99.33333  99.05363 100.00000  98.58044  97.56944  97.64706  97.34579  98.66039  98.12500
[3,]  98.70934 104.77707 103.57143  99.15429  98.93238 103.61446 101.28008 101.35780 100.33121
[4,] 103.92259 100.30395  98.85057  99.42370  99.64029 101.93798 100.94793 105.43085  98.09548
[5,]  98.74182  99.69697 101.16279  99.11894  99.09025 101.14068  98.74797  99.14148  97.07481
[6,]  99.38838 101.51976 101.14943 101.16959 100.55377  99.62406 100.63395 100.86595 100.34667

以您请求的方式容易地对数组进行子集化。试试这个:

x[1:3, 2:5]
            b1       c1        d1        e1
[1,] 100.00000 100.0000 100.00000 100.00000
[2,]  99.05363 100.0000  98.58044  97.56944
[3,] 104.77707 103.5714  99.15429  98.93238

由于数组中的列名实际上不是数据的一部分,因此我通常会保留列名称,如果它们是提供信息的话。但是,您可以更改列名称,包括NULL值:

colnames(x) <- NULL
x[1:3, 2:5]

         [,1]     [,2]      [,3]      [,4]
[1,] 100.00000 100.0000 100.00000 100.00000
[2,]  99.05363 100.0000  98.58044  97.56944
[3,] 104.77707 103.5714  99.15429  98.93238