中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

R語言怎么批量讀取某路徑下文件內容

發布時間:2022-04-02 09:11:09 來源:億速云 閱讀:754 作者:iii 欄目:開發技術

今天小編給大家分享一下R語言怎么批量讀取某路徑下文件內容的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

R剛入門的時候,能夠正確讀取單個文件就覺得小有成就,隨著時間的積累,單一文件地讀取已經不能滿足需求了,此時,批量地做就是解放雙手地過程。

使用for循環把下載地TCGA數據讀入R語言并轉換成數據框

使用三個for循環來完成,這是第一個for循環。

1. 把所有數據讀入在一個文件夾中

dir.create("data_in_one") #創建目標文件夾,也可右鍵創建
dir("rawdata/") #查看原路徑的內容
for (dirname in dir("rawdata/")){  
  ## 1.要查看的單個文件夾的絕對路徑
  mydir <- paste0(getwd(),"/rawdata/",dirname)
  ## 2.找到對應文件夾中的文件并提取名稱,pattern表示模式,可以是正則表達式
  file <- list.files(mydir,pattern = "*.counts")
  ## 3.當前文件的絕對路徑是
  myfile <- paste0(mydir,"/",file)
  ## 4.復制這個文件到目的文件夾
  file.copy(myfile,"data_in_one")  
}

2. 尋找TCGA ID并讓文件名稱和TCGA ID保持一致。

第二個for循環。文件名稱和TCGA ID的對應關系,藏在了metadata中。

metadata <- jsonlite::fromJSON("data/metadata.cart.2021-05-28.json")
metadata_id <- metadata[,c("file_name","associated_entities")]
## 1.準備容器,已經存在,我們把新數據添加在第三列
metadata_id
## 2.循環操作
for (i in 1:nrow(metadata_id)){
  print(i)
  metadata_id[i,3] <- metadata_id$associated_entities[i][[1]]$entity_submitter_id
}
## 重新命名
colnames(metadata_id)[3] <- "TCGA_id"

行排序,為了把文件名稱和TCGA_id對應起來。讀入的順序和復制到新路徑的順序不一致,這一步的目的是讓其保持一致。

rownames(metadata_id) <- metadata_id[,1]
metadata_id <- metadata_id[files,]

3. 輸入文件名并提取文件的第二列(counts列)

#install.packages("data.table")
#構建函數
myfread <- function(files){
  data.table::fread(paste0("data_in_one/",files))$V2
}
## 測試文件
test <- myfread(files[1])

4.1 使用for循環來批量讀入并整合到一個數據框。

## 1.創建容器
gene_id <- data.table::fread(paste0("data_in_one/",files[1]))$V1
expr_df <- data.frame(gene_id=gene_id)
## 2.按照列讀入
for (i in 1:length(files)){
  print(i)
  expr_df[,i+1] = myfread(files[i])
}

## 增加列名
colnames(expr_df) <- c("gene_id",metadata_id$TCGA_id)

### 意外發現
tail(expr_df$gene_id,10)
### 去掉最后5行
(nrow(expr_df)-5)
expr_df <- expr_df[1:(nrow(expr_df)-5),]
save(expr_df,file = "output/BRCA_RNASEQ_exprdf.Rdata")

4.2 使用lapply + function 模式

1.函數

myfread <- function(files){
  data.table::fread(paste0("data_in_one/",files))$V2
}
### 2.lapply
dd = lapply(files,myfread)
### 3.do.call
expr_df = as.data.frame(do.call(cbind,dd))
### 4.添加名稱
colnames(expr_df) = metadata_id$TCGA_id
rownames(expr_df) = data.table::fread(paste0("data_in_one/",files[1]))$V1

以上就是“R語言怎么批量讀取某路徑下文件內容”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

吴堡县| 汉寿县| 乌什县| 山阴县| 福建省| 济阳县| 文水县| 博爱县| 若尔盖县| 中卫市| 金秀| 罗田县| 青冈县| 涿鹿县| 康定县| 儋州市| 霍林郭勒市| 武宁县| 扎囊县| 茌平县| 绿春县| 肇源县| 余干县| 佳木斯市| 东山县| 长兴县| 炉霍县| 合山市| 政和县| 武夷山市| 洮南市| 阳山县| 平邑县| 鹤岗市| 西藏| 白河县| 锡林郭勒盟| 高雄县| 楚雄市| 屯留县| 随州市|