複数のExcelワークシートをループしていくつかの関数を適用して単一data.frame
を各ワークシートから生成し、 元のワークブックと同じシート名のワークブックに戻ります。forループを使用してExcelシートを修正するために複数のデータフレームを書き込む
現時点では新しい本のシート名は正しいが、data frames
はすべてのシートが同じdata frame
になるようにお互いに上書きし続けます。各data frame
をそれぞれのExcelシートに書き込むにはどうすればよいですか?
library(xlsx)
library(agricolae)
#Read all worksheets in one file
read_excel_allsheets <- function(filename) {
sheets <- readxl::excel_sheets(filename)
x <- lapply(sheets, function(X) readxl::read_excel(filename, sheet = X))
names(x) <- sheets
x
}
mysheets <- read_excel_allsheets("Loop_help.xls")`
for (i in 1:length(mysheets)){ #loop through sheets in workbook
file<-as.data.frame(mysheets[i])
for(i in 2:ncol(file)){ #loop through columns in sheets
if(var(file[,i]) > 0){ #exclude columns that are all zeros
#create data frame (df)
#do stuff
}
#dostuff
}
#do more stuff
n<-excel_sheets("Loop_help.xls") #sheet names
for (i in 1:length(mysheets)) {#write new sheets to excel
if (i == 1)
write.xlsx(df, file="Loop.Help.xls", sheetName = n[i])
else write.xlsx(df, file="Loop.Help.xls", sheetName = n[i],
append = TRUE)
}
}
:ここ
は、最終的なコードである私は、これは非常に特異な問題である知っているが、それは他のユーザーのために役立つことができるように、私は解決策を見つけることができれば、私はそれをクリーンアップすることは非常に喜んで将来は。今のところ私はすべてを含めることが最善だと思った... –
'write.xlsx'の最後に' objects'がどこに作られていますか? – Parfait
おっと!以前の試みからの残り。早急に変更されます。 –