2016-03-03 40 views
0

是否可以将R中的矩阵的名称设置为数字? 我知道它们是字符或NULL默认情况下。 但是,如果有一种方法可以将它们转换为数字,它对我来说会很有帮助。R:设置colnames为数字

任何澄清将受到欢迎。

编辑

我会更clearely解释一下:

我有一个包含两个数值列中的数据帧,例如:

> xy 
    x y 
[1,] 1 1 
[2,] 2 2 
[3,] 3 5 
[4,] 4 7 

> xy = as.data.table(xy) 

> xy_cast = dcast(xy, x~y, value.var="y", fun.aggregate=length) 

> xy_cast 
    x 1 2 5 7 
1 1 1 0 0 0 
2 2 0 1 0 0 
3 3 0 0 1 0 
4 4 0 0 0 1 

> xy_cast = xy_cast[-1] 

> xy_cast 
    1 2 5 7 
    1 1 0 0 0 
    2 0 1 0 0 
    3 0 0 1 0 
    4 0 0 0 1 

> class(colnames(xy_cast)) 
[1] "character" 

正如你看到我的colnames是数字由他们被强制为character。如果我可以将名称转换为numeric它会减少算法其余部分的执行时间。

但是,我不确定这是可能的。

SOLUTION

我试图从另一个角落对待这个问题,所以我的想法不同:

which(colnames(df)=="b") 

该R功能帮助我通过我的colnames通过选择的列数我的列名称,这有助于减少执行时间。

第一个回答这个问题,让我在我的问题解决:

Get the column number in R given the column name

感谢您的答复。

+2

你可以指定一个数字,但是会被强制转换为“字符”。从文档:'NULL或非零长度的字符向量' –

+0

@docendodiscimus,这是我的问题:我的姓氏包含数字,但它们被自动强制为“字符”。有没有解决方案? – sarah

+4

为什么你要他们是数字?这听起来有点像[XY问题](http://meta.stackexchange.com/a/233676)。 – Laterow

回答

3

您可以通过默认的列由各自的数量

df[,3] 

将返回第三列,或者你也可以使用

df[,"155"] 

将返回名称为“155”列其中是一个角色。 如果你要列名作为数字后,你可以提取它,然后要挟说

as.numeric(names(df)[3]) 

将返回第三列的名称为数字,如果是数字字符。所以你可以很容易地来回走动。

+0

谢谢@Jan Sila。如果可能的话,我会尝试将'as.numeric(names(df)[3])'放到我的脚本中。 – sarah

+0

如果您需要进一步的帮助,请在下面评论。 –

+0

这个问题的第一个答案,使我对我的问题有所不同:http://stackoverflow.com/questions/9277363/get-the-column-number-in-r-given-the-column-name谢谢。 – sarah