関数を作成して R でループする方法について非常に基本的な質問があります。
#create a test df
a<-c(1,2,3,4,5,6,7)
b<-c(1,2,4,4,5,6,7)
c<-c(1,7,1,7,2,5,4)
d<-c(1,7,1,7,2,5,4)
df.abcd<-data.frame(a,b,c,d)
Boxplots を自動的に作成し、その出力を保存したいと考えています。次のようにうまく動作します:
# Create Boxplots from all columns
for (x in 1:length(df.abcd)) {
windows()#opens a graphics window - necesarry for the plots
boxplot(df.abcd[,x],
main=names(df.abcd)[x])#writes colnames as title
savePlot(filename=paste("E:\\R\\2_outputs\\boxplot_,deparse(x)), type="tiff")
dev.off()#disables the graphics window
}
コードを繰り返さずに複数のデータフレームに適用できるように、プロシージャを関数にしたいと思います。私は次のようなことを考えました:
#make the above a function and apply it
test.function<-function(y){
for (x in 1:length(y)){
windows()
boxplot(y[,x],
main=names(y)[x])
savePlot(filename=paste("E:\\R\\2_outputs\\boxplot_,deparse(x)), type="tiff")
dev.off()
}}
test.function(df.abcd)
したがって、最終的にこの関数は機能しますが、ループしなくなります。データフレームの最初の列のみが出力として作成されます。私は何を間違っていますか?