R:将colnames设置为numeric

时间:2016-03-03 20:30:21

标签: r

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

欢迎任何澄清。

修改

我会更清楚地解释自己:

我有一个包含两个数字列的数据框,例如:

> 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"

正如您所看到的,我的姓氏是数字,他们被强制转移到character。如果我可以将colnames转换为numeric,它将减少算法其余部分的执行时间。

但是,我不确定是否可能。

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

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

这个R函数帮助我通过选择列名的列号来浏览colnames,这有助于缩短执行时间。

这个问题的第一个答案帮助我解决了问题:

Get the column number in R given the column name

感谢您的回复。

1 个答案:

答案 0 :(得分:3)

默认情况下,您可以按各自的编号

添加列
 df[,3] 

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

 df[,"155"] 

将返回名称为“155”的列,这是一个字符。 如果您在将列名称作为数字后获取,则可以将其提取,然后强制说出

 as.numeric(names(df)[3]) 
如果是数字字符,

将返回第三列的名称作为数字。所以你可以轻松地来回走动..