从R中的指定路径按文件夹分发文件

从R中的指定路径按文件夹分发文件,r,dplyr,R,Dplyr,我有一个csv文件,它指示jpg文件在文件夹中的路径。列表示必须复制jpg的文件夹的名称,行中有指向原始文件夹(必须从中复制)中jpg的路径。通过dput()共享示例 因此,必须将x1列中指示的所有jpg文件路径复制到C:\\x1\ 并且必须将x2列中指示的所有jpg文件路径复制到C:\\x2\ 必须将x3列中指示的所有jpg文件路径复制到C:\\x3\ 如何操作,通过R?max 看起来,当您读取csv时,您没有将选项stringsAsFactors=FALSE,这会导致后面的函数出现问题 您可

我有一个csv文件,它指示jpg文件在文件夹中的路径。列表示必须复制jpg的文件夹的名称,行中有指向原始文件夹(必须从中复制)中jpg的路径。通过dput()共享示例

因此,必须将
x1
列中指示的所有jpg文件路径复制到
C:\\x1\
并且必须将
x2
列中指示的所有jpg文件路径复制到
C:\\x2\

必须将
x3
列中指示的所有jpg文件路径复制到
C:\\x3\

如何操作,通过R?

max

看起来,当您读取csv时,您没有将选项
stringsAsFactors=FALSE
,这会导致后面的函数出现问题

您可以通过以下方式转换
x1

mydata=mydata%>%mutate_all(na_if,”)#将空条目设置为na
mydata=lappy(mydata,as.character)#将所有设置为character
mydata=lappy(mydata,na.exclude)#删除NAs,空元素将抛出错误。
file.copy(from=mydata$x1,to=file.path(“C:/x1”,basename(mydata$x1)))}复制第一个“列”。
我从来不会用
lappy
做复制之类的事情,因为如果一个人做错了,它会变得一团糟。根据您的数据框架有多大,您也可以尝试这样做。 但我建议只重写最后一行,这也将使您能够更好地控制文件的去向

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。

请参见
?file.copy
要复制文件,
basename
要提取文件的基本名称(不带目录路径),粘贴
来连接字符串。
    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))