for循环特定文件名R
for loop specific file names 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 循环一直有效,直到您遇到 uid_car 中不包含的第 i 个元素。
我尝试了一个 mapply 函数,它可能更简洁一些,但没有太多编写这些函数的经验...任何帮助将不胜感激。
for (i in length_of_file_list) {
if (startsWith(file_list[i], uid_car[])) {
file.copy(file_list[i], new_path)
}
}
我认为你不需要循环。
files.to.copy <- file_list[file_list %in% paste0(uid_car,'_01.file')]
file.copy(files.to.copy, new_path)
如果您确实想循环执行此操作,这可能会满足您的要求:
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"
我有一个标识符列表保存为字符变量 (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 循环一直有效,直到您遇到 uid_car 中不包含的第 i 个元素。
我尝试了一个 mapply 函数,它可能更简洁一些,但没有太多编写这些函数的经验...任何帮助将不胜感激。
for (i in length_of_file_list) {
if (startsWith(file_list[i], uid_car[])) {
file.copy(file_list[i], new_path)
}
}
我认为你不需要循环。
files.to.copy <- file_list[file_list %in% paste0(uid_car,'_01.file')]
file.copy(files.to.copy, new_path)
如果您确实想循环执行此操作,这可能会满足您的要求:
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"