gpt4 book ai didi

R - "Error in file(file, ifelse(append, "a", "w")) : cannot open the connection"

转载 作者:行者123 更新时间:2023-12-04 12:04:03 32 4
gpt4 key购买 nike

我有一个这种形式的数据框:

X1                                      X2 X3                       X4
R290601 WOVEN TWILL 001 6 231
009-1373 *with perforated L3-0,3 152 NA <NA>
R481400 THREAD A1282 12 A0399
0091375 PURE SOCK 001 6 072
R282380 SOFTLIN W/FELT 007 6 072
R282480 MICROFIBRE 001 6 F72
R281200 ARTIFICIAL A0638 6 072


我想遍历行,对于每一行,检查第一列 (X1) 的名称并在我的计算机中创建一个具有相同名称的文件夹,并在该文件夹内创建与其名称相同的子文件夹各列 (X2)、(X3)、(X4)。当我运行脚本时,我只能看到文件夹 R290601 斜纹编织已创建,带有子文件夹 001 , 6 231 ,但不是其余的,我收到此错误:

Error in file(file, ifelse(append, "a", "w")) : cannot open the connection



此外,我在第二行收到此警告:

In dir.create(paste0(pth, df$X1[i])) : cannot create dir 'C:\Users\Dev\Desktop\Joe\009-1373 *with perforated L3-0,3', reason 'Invalid argument'



我的代码是这样的:

getwd()
setwd("C:/Users/Dev/Desktop/Joe")

library(xlsx)
library(rJava)
library(xlsxjars)

#get file names
f = list.files("./")
#read files
dat = lapply(f, function(i){
x = read.xlsx(i, sheetIndex = 1, sheetName = NULL, startRow = 24,
endRow = NULL, as.data.frame = TRUE, header = FALSE)
#return columns with names and colors
x = x[, c(1, 2, 3, 4), drop=FALSE]
#return the data
x
})

library(plyr)
df1 <- ldply(dat, data.frame) ## convert list into a dataframe

#remove NA's
complete.cases(df1)
x <- df1[complete.cases(df1),]
str(x)

#show only rows that start with numbers or 1 letter and then numbers
df <-df1[grepl("^[0-9]|^[a-zA-Z][0-9].*", df1$X1), ]
print(df)

pth <- "C:/Users/Dev/Desktop/Joe/"

# Iterate within each row of df
for(i in 1:nrow(df)){
# Create 1st path
dir.create(paste0(pth , df$X1[i]))
# Create 2nd and 3rd paths
dir.create(paste0(pth, df$X1[i], "/",df$X2[i]))
dir.create(paste0(pth, df$X1[i], "/",df$X3[i]))
dir.create(paste0(pth, df$X1[i], "/",df$X4[i]))

# write data.frame row as txt
write.table(df[i, ], file=paste0(pth, df$X1[i], "/", df$X1[i],".txt"), sep=";")
}


为什么会出现此错误,以及如何查看所有文件夹及其相应的子文件夹?

最佳答案

library(readxl)
library(tidyverse)
## First read the dataframe taht contains Folder & Sub-folder names
df <- read_excel("C:/Users/Dev/Desktop/Joe/df.xlsx")


## Special characters like "\ / : * ? " < > |" cann't be present in filename,
## So first remove it from the df for every column.
df <- df %>%
mutate(across(everything(), .fns = function(x) gsub('[[:punct:]]','', x))) ## '[[:punct:]]' for the special character


setwd('C:/Users/Dev/Desktop/Joe') ## Replace with your working directory



for(i in 1:nrow(df)){

df_name <- df[i, ] %>%
select_if(~ !is.na(.x)) %>%
select_if(~ .x != 'NA') ## if NA is character & you don't need it

for(j in 1:ncol(df_name)){

if(!is.na(df_name[,j])){
if(!dir.exists(as.character(df_name[,j]))){
dir.create(as.character(df_name[,j]), recursive = TRUE)
setwd(as.character(df_name[,j])) ## Set wd to the newly created dir
## X1 --> X2 --> X3 --> X4
}
}

}

setwd('C:/Users/Dev/Desktop/Joe') ## Again go back to the main wd

}

## IF you want the folder like this : X1 --> X2, X3, X4 then

for(i in 1:nrow(df)){

df_name <- df[i, ] %>%
select_if(~ !is.na(.x)) %>%
select_if(~ .x != 'NA') ## if NA is character & you don't need it

if(!is.na(df_name[,1])){
if(!dir.exists(as.character(df_name[,1]))){
dir.create(as.character(df_name[,1]), recursive = TRUE)
setwd(as.character(df_name[,1])) ## Set wd to the newly created dir
}
}

for(j in 2:ncol(df_name)){

if(!is.na(df_name[,j])){
if(!dir.exists(as.character(df_name[,j]))){
dir.create(as.character(df_name[,j]), recursive = TRUE)
}
}

}

setwd('C:/Users/Dev/Desktop/Joe') ## Again go back to the main wd

}

关于R - "Error in file(file, ifelse(append, "a", "w")) : cannot open the connection",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38266790/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com