繁体   English   中英

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

[英]Assigning column names to df, stop characters from automatically converting to numbers?

我有一个 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(expression)=genes 或 colnames(expression)=paste(genes) 时,表达式编号保持不变,但基因名称被转换为看似无意义的数字。

经过进一步调查,我发现“基因”的结构出于某种原因是“因子”——当我使用 as.character 进行转换时,所有基因都被重新分配,看起来像是一个随机数(AB1G 现在是 1143,A1CF 现在是 967, ETC)。

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

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

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

或者

colnames(expression) <- c(as.matrix(genes)) 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM