R:将colnames设置为numeric
可以将R中矩阵的colname设置为numeric吗? 我知道它们默认为字符或NULL。 但是,如果有一种方法可以把它们转换成数字,那将对我非常有帮助 欢迎作出任何澄清 编辑 我会更清楚地解释自己: 我有一个包含两个数字列的数据框,例如: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
> 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])
到我的脚本中。如果您需要进一步的帮助,请在下面评论。这个问题的第一个答案让我对我的问题有了不同的理解:谢谢。