我想循环遍历数字数据框列表,并使用for循环为每个数据框的特定列创建图。我有一个工作代码,但结果很奇怪。我希望只创建两个图,但R创建四个,我可能根本不明白为什么特别是因为当我使用print而不是plot时,他正在打印我期望的值。下面是一个更大的数据集的小例子。任何想法都非常感谢。非常感谢!
# Create data
a <- c(1,2,3,4,5)
b <- c(6,7,8,9,10)
c <- c(0,0,0,1,0)
d <- c(1,2,3,4,5,6,7,8,9,10)
e <- c(11,12,13,14,15,16,17,18,19,20)
f <- c(0,0,0,0,0,0,0,1,0,0)
# Create data frames
df1 <- data.frame(cbind(a,b,c))
df2 <- data.frame(cbind(d,e,f))
names(df2) <- c("a","b","c")
# Create list of data frames
l <- list(df1,df2)
# Create titles for plots
titlenames <- c("Graph 1","Graph 2")
# Loop over list of data frames and create plots
for (i in l){ for(j in titlenames) {
plot(x=(i$a[i$c==0]),y=(i$b[i$c==0]),main="",xlab="",ylab="")
title(main=paste(j))
}}
答案 0 :(得分:5)
你应该这样做吗? -
# Loop over list of data frames and create plots
for (i in seq(titlenames)) {
plot(x=(l[[i]]$a[l[[i]]$c==0]),y=(l[[i]]$b[l[[i]]$c==0]),main="",xlab="",ylab="")
title(main=titlenames[i])
}
我发布了答案,评论会很丑陋而难以阅读。基本上,我已经删除了j循环并且正在跟踪1,现在循环超过1:n,而不是l
。