R:将colnames设置为numeric

R:将colnames设置为numeric,r,R,可以将R中矩阵的colname设置为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", fu

可以将R中矩阵的colname设置为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"
正如您所看到的,我的colname是数字,它们被强制为
字符
。如果我可以将colnames转换为
numeric
,它将减少算法其余部分的执行时间

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

解决方案

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

which( colnames(df)=="b" )
这个R函数通过选择我的列名的列号帮助我遍历我的
colnames
,这有助于减少执行时间

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


感谢您的回复。

默认情况下,您可以按相应的编号对列进行排序

 df[,3] 
将返回第三列,也可以使用

 df[,"155"] 
它将返回名为“155”的列,该列是一个字符。 如果要将列名作为数字获取,则可以提取它,然后强制执行say

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

将以数字形式返回第三列的名称(如果是数字字符)。因此,您可以轻松地来回移动。

默认情况下,您可以根据列的各自编号来设置列

 df[,3] 
将返回第三列,也可以使用

 df[,"155"] 
它将返回名为“155”的列,该列是一个字符。 如果要将列名作为数字获取,则可以提取它,然后强制执行say

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

将以数字形式返回第三列的名称(如果是数字字符)。因此,您可以轻松地来回移动。

您可以指定一个数字,但这将强制为
字符
。从文档:
NULL或长度非零的字符向量
@docendodiscimus,这就是我的问题:我的colnames包含数字,但它们会自动强制为
字符
。有解决这个问题的方法吗?你到底为什么希望它们是数字?这听起来有点像。如果你需要它们进行某种数学运算,可以在它们上面使用
as.numeric
as.integer
。现在还不完全清楚你为什么希望它们是数字。你在这里应用什么样的算法?否则,如果列名从未更改,您可以将它们存储在单独的数字向量中。您可以指定一个数字,但这将强制为
字符
。从文档:
NULL或长度非零的字符向量
@docendodiscimus,这就是我的问题:我的colnames包含数字,但它们会自动强制为
字符
。有解决这个问题的方法吗?你到底为什么希望它们是数字?这听起来有点像。如果你需要它们进行某种数学运算,可以在它们上面使用
as.numeric
as.integer
。现在还不完全清楚你为什么希望它们是数字。你在这里应用什么样的算法?否则,如果列名从未更改,您可以将它们存储在单独的数字向量中。谢谢@Jan Sila。如果可能的话,我会尝试将
作为.numeric(names(df)[3])
加入我的脚本。如果您需要进一步的帮助,请在下面评论。这个问题的第一个答案让我对我的问题有了不同的理解:谢谢。谢谢@Jan Sila。如果可能的话,我会尝试将
设置为.numeric(names(df)[3])
到我的脚本中。如果您需要进一步的帮助,请在下面评论。这个问题的第一个答案让我对我的问题有了不同的理解:谢谢。