亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將data.framework列從因子轉換為字符

將data.framework列從因子轉換為字符

拉風的咖菲貓 2019-06-28 15:41:17
將data.framework列從因子轉換為字符我有一個數據框架。我們打電話給他bob:> head(bob)                  phenotype                         exclusion GSM399350 3- 4- 8- 25- 44+ 11b- 11c- 19- NK1.1- Gr1- TER119-GSM399351 3- 4- 8- 25- 44+ 11b- 11c- 19- NK1.1- Gr1- TER119-GSM399352 3- 4- 8- 25- 44+ 11b- 11c- 19- NK1.1- Gr1- TER119-GSM399353 3- 4- 8- 25+ 44+ 11b- 11c- 19- NK1.1- Gr1- TER119-GSM399354 3- 4- 8- 25+ 44+ 11b- 11c- 19- NK1.1- Gr1- TER119-GSM399355 3- 4- 8- 25+ 44+ 11b- 11c- 19- NK1.1- Gr1- TER119-我想連接這個數據框架的行(這將是另一個問題)。但是你看:> class(bob$phenotype)[1] "factor"Bob列是因素。因此,例如:> as.character(head(bob))[1] "c(3, 3, 3, 6, 6, 6)"       "c(3, 3, 3, 3, 3, 3)"      [3] "c(29, 29, 29, 30, 30, 30)"我還沒有開始理解這一點,但我想這些都是關于(加拉卡庫斯國王宮廷)的因素水平的指數。bob?不是我想要的。奇怪的是,我可以瀏覽bob用手做bob$phenotype <- as.character(bob$phenotype)效果很好。而且,在輸入一些內容之后,我可以得到一個data.framework,它的列是字符而不是因素。所以我的問題是:我怎么能自動做到這一點?如何將帶因子列的data.framework轉換為具有字符列的data.framework,而不必手動遍歷每個列?額外的問題:為什么手動方法有效?
查看完整描述

3 回答

?
蕭十郎

TA貢獻1815條經驗 獲得超13個贊

跟蹤馬特和德克。如果要在不更改全局選項的情況下重新創建現有的數據框架,可以使用Apply語句重新創建它:

bob <- data.frame(lapply(bob, as.character), stringsAsFactors=FALSE)

這將所有變量轉換為類“字符”,如果只想轉換因素,請參見馬立克解.

正如@Hadley所指出的,下面的內容更簡潔。

bob[] <- lapply(bob, as.character)

在這兩種情況下,lapply輸出列表;但是,由于R的神奇特性,[]在第二種情況下,保存bob對象,從而消除了使用as.data.frame與爭論stringsAsFactors = FALSE.


查看完整回答
反對 回復 2019-06-28
?
繁華開滿天機

TA貢獻1816條經驗 獲得超4個贊

僅取代因素:

i <- sapply(bob, is.factor)bob[i] <- lapply(bob[i], as.character)

包內dplyr在0.5.0版新函數中mutate_if介紹:

library(dplyr)bob %>% mutate_if(is.factor, as.character) -> bob

來自RStudio的Package purrr給出了另一種選擇:

library(purrr)library(dplyr)bob %>% map_if(is.factor, as.character) %>% as_data_frame -> bob

(記住這是新包裝)


查看完整回答
反對 回復 2019-06-28
  • 3 回答
  • 0 關注
  • 732 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號