Для петли конкретных имен файлов R

У меня есть список идентификаторов, сохраненных в виде символьной переменной (uid_car) У меня есть список файлов (file_list) с идентификатором в качестве префикса к имени файла (например,1000 _ *. File)

uid_car<-1000,1002,1004.... len (170) file_list <-1000_01_.file,1001_02.file,1003_02.file,1002_01.file,1004_01.file... len (~ 700)

В приведенном выше примере я хочу просмотреть список файлов и скопировать файлы с префиксом, содержащимся в uid_car. Следовательно, только файлы 1000_01.file,1002_01.file и 1004_01.file будут скопированы в новый путь.

Следующий цикл for работает до тех пор, пока вы не наткнетесь на элемент ih, не содержащийся в uid_car.

Я попробовал mapply-функцию, которая, возможно, немного более аккуратна, но не имеет большого опыта написания этих... любая помощь будет оценена.

for (i in length_of_file_list) {
  if (startsWith(file_list[i], uid_car[])) {
    file.copy(file_list[i], new_path)
  }
}

2 ответа

Решение

Если вы действительно хотите сделать это в цикле, это может сделать то, что вы ищете:

uids_to_print <- c("1000", "1001", "1004")
filenames <-c("1000_01.file","1000_02.file","1001_01.file","1001_02.file","1002_01.file","1002_02.file","1003_01.file","1004_01.file")


# Iterate through each filename
for (filename in filenames) {

    # Pull out the characters prior to the first underscore
    filename_uid <- unlist(strsplit(filename, "_"))[1]

    # Cheeck if it's in the list of ones to print
    if(filename_uid %in% uids_to_print) {
        # Put file operation inside this loop

    }
}

например, выполнение

for (filename in filenames) {
    filename_uid <- unlist(strsplit(filename, "_"))[1]
    if(filename_uid %in% uids_to_print) {
        print(paste("copy", filename, sep=" "))
    }
}

доходность

"copy 1000_01.file"
"copy 1000_02.file"
"copy 1001_01.file"
"copy 1001_02.file"
"copy 1004_01.file"

Я не думаю, что вам нужна петля.

files.to.copy <- file_list[file_list %in% paste0(uid_car,'_01.file')]
file.copy(files.to.copy, new_path)
Другие вопросы по тегам