Переместить файлы в одноименную папку через R - PullRequest
0 голосов
/ 01 января 2019

У меня есть папка с различными образцами CSV-файлов и папками с одинаковыми именами:

files name:-
sample_190612.csv
sample_729924.csv  
sample_729794.csv 
sample_780414.csv
sample_780388.csv 
................
............
folders:-
sample_190612
sample_729924
sample_729794 
sample_780414
sample_780388
............
............... 

Как переместить эти файлы в папку с именами файлов

Ожидаемый вывод: Папка содержит файл: -

  Folder:-     sample_190612 
  File:        sample_190612.csv


  Folder:-     sample_729924  
  file:        sample_729924 .csv


  Folder:-    sample_780414 
  file:       sample_780414.csv

1 Ответ

0 голосов
/ 02 января 2019

Я не совсем уверен, что вы хотите сделать.Но приведенный ниже код может разделять строки «AC ###» запятыми (как попросил Parfait), создавать папки, используя первый столбец, и сохранять файлы, используя строку «AC ###».

dfFiles = data.frame(matrix(data = c(
  "sample_190612", "FSTL1",
  "sample_729924", "AC002072.1",
  "sample_729924", "AC002070.1,AC004812.1",
  "sample_729794", "ANKRD12,AP000897.1,AP005118.1,AP005227.1",
  "sample_780414", "AC002464.1,AIM1,AK9,AL021326.",
  "sample_780414", "AC002464.4",
  "sample_780414", "AIM2",
  "sample_780388",  "ATP10A,MIR4715"
), ncol = 2, byrow = TRUE  ), stringsAsFactors = FALSE)

colnames(dfFiles) = c("sample", "gene")
# dfFiles

lsSplit = strsplit(x = dfFiles$gene, split = ",")

# create a parent folder
myParent = "sampleParent"
if(!dir.exists(myParent)){dir.create(myParent)}

# create sub folders
for(ctSample in seq_len(nrow(dfFiles))){
  thisSample = dfFiles$sample[ctSample]
  thisPath = paste0(myParent, "/", thisSample)
  if(!dir.exists(thisPath)){dir.create(thisPath)}
  # save files
  for(ctSplit in seq_len(length(lsSplit[[ctSample]]))){
    thisSplit = lsSplit[[ctSample]][ctSplit]
    write.csv(x = 0, file = paste0(thisPath, "/", thisSplit, ".csv"))
  }
}

Это ниже изображение результата.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...