将列名分配给df,阻止字符自动转换为数字吗?

问题描述 投票:0回答:1

我有一个基因名称的df和那些基因的值的df。我想将两者结合起来(用基因名称标记数据框)。

我有一个1x23000 df,“基因”:

AB1G, A1CF, ..., ZYY1

和8000x23000 df,“表达式”:

1 0 ... 3

0 0 ... 1

2 2 ... 0

我想将它们合并为一个df:

A1BG A1CF ... ZYY1

1 0 ... 3

0 0 ... 1

2 2 ... 0

当我使用rbind时,保留了基因名称,但“表达式”中的所有非零值都变为N / A。

当我使用colnames(表达式)= genes或colnames(expression)= paste(genes)时,保留了表达式编号,但基因名称被转换为看似毫无意义的数字。

[经过进一步的调查,我发现“基因”的结构出于某种原因是“因子”-当我用as.character进行转换时,所有基因都被重新分配了,似乎是一个随机数(AB1G现在为1143,A1CF现在为967等)。

我认为基因和dfs表达格式不兼容可能会产生问题。如何将字符列名称添加到数字df?

r
1个回答
0
投票

出现数字值而不是字符串的问题是因为列为factor,并且当列被强制为整数存储模式值时。相反,我们可以在character之后转换为unlist类,或转换为matrix,后者会自动将类转换为character,然后用dim删除c属性(以转换为vector

 colnames(expression) <- as.character(unlist(genes))

colnames(expression) <- c(as.matrix(genes)) 
© www.soinside.com 2019 - 2024. All rights reserved.