是否可以将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
感谢您的回复。
答案 0 :(得分:3)
默认情况下,您可以按各自的编号
添加列 df[,3]
将返回第三列,或者您也可以使用
df[,"155"]
将返回名称为“155”的列,这是一个字符。 如果您在将列名称作为数字后获取,则可以将其提取,然后强制说出
as.numeric(names(df)[3])
如果是数字字符,将返回第三列的名称作为数字。所以你可以轻松地来回走动..