簡體   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