R:循环数据帧列表并创建具有约束的列图

时间:2013-11-28 12:03:04

标签: r loops plot

我想循环遍历数字数据框列表,并使用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))
}}

1 个答案:

答案 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