我试图在循环中编写这些命令:
table1 <- table[table$ringnr == 1,]
interaction.plot(table1$expnr, table1$disturbance, table1$flights)
table2 <- table[table$ringnr == 2,]
interaction.plot(table2$expnr, table2$disturbance, table2$flights)
table3 <- table[table$ringnr == 3,]
interaction.plot(table3$expnr, table3$disturbance, table3$flights)`
等
这是我到目前为止所做的:
for(i in 1:19){
mypath <- file.path("C:", "Users", paste("expnr_", i, ".jpg", sep = ""))
jpeg(file=mypath)
assign(paste("table",i), subset(table, ringnr == i))
interaction.plot(table[i]$expnr, table[i]$disturbance, table[i]$flights)
dev.off()}
第一部分是工作,我得到数据集table1,table2等 但是,如果我想在下一行中使用它们,R不明白我想要那些数据集。
我知道为此使用循环是不好的做法。但有谁知道我如何进一步使用循环中创建的数据框? 或者我可以使用apply函数吗?
提前致谢!
答案 0 :(得分:2)
如果以后不需要过滤表,可以这样做:
for(i in 1:19){
mypath <- file.path("C:", "Users", paste("expnr_", i, ".jpg", sep = ""))
jpeg(file=mypath)
temp_table <- subset(table, ringnr == i)
interaction.plot(temp_table$expnr, temp_table$disturbance, temp_table$flights)
dev.off()
}
如果以后需要它们,可以存储一个列表:
table_list<- list()
for(i in 1:19){
mypath <- file.path("C:", "Users", paste("expnr_", i, ".jpg", sep = ""))
jpeg(file=mypath)
table_list[[i]] <- subset(table, ringnr == i)
interaction.plot(table_list[[i]]$expnr, table_list[[i]]$disturbance, table_list[[i]]$flights)
dev.off()
}
答案 1 :(得分:0)
不要将您的对象命名为table
,table
是一种常用的R函数,而您正在覆盖它,在某些时候会遇到麻烦。
此外,更重要的是,这里不要创建3个表,将它们放在列表中,它们是相同类型的编号对象,它们应该保持链接。完全避免使用assign
是一个很好的经验法则。
your_tables <- lapply(1:3,function(i) subset(your_table,ringnr == i))
然后你可以这样做:
lapply(your_tables,function(x) interaction.plot(x$expnr, x$disturbance, x$flights))