gpt4 book ai didi

r - 在 R 中创建函数时循环不起作用

转载 作者:行者123 更新时间:2023-12-02 05:18:39 25 4
gpt4 key购买 nike

我有一个非常基本的问题,关于如何在 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)

我想自动创建箱线图并保存它们的输出。它像这样工作得很好:

    # 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)

所以最后这个函数起作用了,但它不再循环了。只有我的数据框的第一列被创建为输出。我做错了什么?

最佳答案

你的代码有一些错误。 (将 x 更改为 y 并添加 "作为路径名)。这应该有效:

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()
}
}

做这样的事情会更好(和@Joris 的回答一样,也许这里直接使用 tiff 会更好)

test.function<-function(y){
for (x in 1:length(y)){
png(paste("E:\\R\\2_outputs\\boxplot_",deparse(x),'.tiff'))
pp <- boxplot(y[,x], main=names(y)[x])
dev.off()
}
}

test.function(df.abcd)

关于r - 在 R 中创建函数时循环不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14236578/

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