我有csv文件,它指示指向它们文件夹中的jpg文件的路径。列指示必须在其中复制jpg的文件夹的名称,在行中,它们的原始文件夹中有指向jpg的路径(必须从这些路径中复制)。通过dput()共享示例
mydata=structure(list(x1 = structure(c(2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 1L, 1L, 1L),
.Label = c("", "C:\\Users\\OCR\\Downloads\\OCR pass 2\\input\\17992279.png", "C:\\Users\\OCR\\Downloads\\OCR pass 2\\input\\CCI44245909_10_173_201907311705.jpg",
"C:\\Users\\OCR\\Downloads\\OCR pass 2\\input\\CCI44253326_03_61_201907311507.jpg",
"C:\\Users\\OCR\\Downloads\\OCR pass 2\\input\\CCSRBP44249755_10_191_201907311444.jpg",
"C:\\Users\\OCR\\Downloads\\OCR pass 2\\input\\CCSRBP44253009_10_935_201907311358.jpg",
"C:\\Users\\OCR\\Downloads\\OCR pass 2\\input\\CCSRBP44254483_01_241_201907311457.jpg",
"C:\\Users\\OCR\\Downloads\\OCR pass 2\\input\\CCSRBP44537611_10_71_201908281506.jpg",
"C:\\Users\\OCR\\Downloads\\OCR pass 2\\input\\CCSRBP44548452_10_973_201908291551.jpg"),
class = "factor"), x2 = structure(c(2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 1L, 1L, 1L),
.Label = c("", "C:\\Users\\OCR\\Downloads\\OCR pass 2\\input\\CCI44243943_10_916_201907311338.jpg",
"C:\\Users\\OCR\\Downloads\\OCR pass 2\\input\\CCI44245909_10_173_201907311705.jpg",
"C:\\Users\\OCR\\Downloads\\OCR pass 2\\input\\CCI44299011_10_52_201908281735.jpg",
"C:\\Users\\OCR\\Downloads\\OCR pass 2\\input\\CCI44305733_10_845_201908261634.jpg",
"C:\\Users\\OCR\\Downloads\\OCR pass 2\\input\\CCSRBP44249755_10_191_201907311444.jpg",
"C:\\Users\\OCR\\Downloads\\OCR pass 2\\input\\CCSRBP44254483_01_241_201907311457.jpg",
"C:\\Users\\OCR\\Downloads\\OCR pass 2\\input\\CCSRBP44537550_10_155_201908310857.jpg",
"C:\\Users\\OCR\\Downloads\\OCR pass 2\\input\\DKRBP18729589_08_881_201907311205.jpg"),
class = "factor"), x3 = structure(1:11, .Label = c("C:\\Users\\OCR\\Downloads\\OCR pass 2\\input\\CCI44243943_10_916_201907311338.jpg",
"C:\\Users\\OCR\\Downloads\\OCR pass 2\\input\\CCI44245909_10_173_201907311705.jpg",
"C:\\Users\\OCR\\Downloads\\OCR pass 2\\input\\CCI44265269_10_52_201908280944.jpg",
"C:\\Users\\OCR\\Downloads\\OCR pass 2\\input\\CCI44299011_10_52_201908281735.jpg",
"C:\\Users\\OCR\\Downloads\\OCR pass 2\\input\\CCI44305733_10_845_201908261634.jpg",
"C:\\Users\\OCR\\Downloads\\OCR pass 2\\input\\CCI44540448_10_973_201908291524.jpg",
"C:\\Users\\OCR\\Downloads\\OCR pass 2\\input\\CCSRBP44249755_10_191_201907311444.jpg",
"C:\\Users\\OCR\\Downloads\\OCR pass 2\\input\\CCSRBP44254483_01_241_201907311457.jpg",
"C:\\Users\\OCR\\Downloads\\OCR pass 2\\input\\CCSRBP44537550_10_155_201908310857.jpg",
"C:\\Users\\OCR\\Downloads\\OCR pass 2\\input\\CCSRBP44537577_10_890_201908271624.jpg",
"C:\\Users\\OCR\\Downloads\\OCR pass 2\\input\\DKRBP18729589_08_881_201907311205.jpg"),
class = "factor")), .Names = c("x1", "x2", "x3"), class = "data.frame", row.names = c(NA,
-11L))因此,必须将x1列中指示的所有jpg文件路径复制到C:\\X1\,而在x2列中指示的所有jpg文件路径必须复制到C:\\X2\。
必须将x3列中指示的所有jpg文件路径复制到C:\\X3\。
怎么做,通过R?
发布于 2019-10-31 11:25:06
马克斯
看起来,当您在csv中阅读时,您没有将选项stringsAsFactors=FALSE放入其中,这会导致函数出现问题。
可以通过以下方式转换x1等
mydata=mydata %>% mutate_all(na_if,"") #sets the empty entries to NA
mydata=lapply(mydata, as.character) #sets all to character
mydata=lapply(mydata, na.exclude) #removes the NAs, empty elements would throw errors.
file.copy(from=mydata$x1,to=file.path("C:/X1",basename(mydata$x1)))}) #copies for the first "column".我从不使用lapply进行复制,因为如果一个人做错了,就会变得很混乱。根据数据帧的大小,您也可以尝试这样做。但我建议只重写最后一行,这也会让您更好地控制文件的去向。
file.copy(from=mydata$x2,to=file.path("C:/X2",basename(mydata$x2)))})
file.copy(from=mydata$x3,to=file.path("C:/X3",basename(mydata$x3)))})注意:在R中,使用/作为文件路径中的分隔符要方便得多,这也适用于windows。
https://stackoverflow.com/questions/58641588
复制相似问题