【发布时间】:2016-03-01 18:27:12
【问题描述】:
假设我有一个名为“数据”的数据框:
Sal T1 T2 T3 T4 T5 T6
29.0 4.00 NA NA NA NA NA
29.5 7.50 NA NA NA NA NA
30.0 10.40 1.50 NA NA NA NA
30.5 12.50 6.00 NA NA NA NA
31.0 14.50 9.00 NA NA NA NA
31.5 16.25 11.50 4.00 NA NA NA
32.0 18.00 13.50 7.50 NA NA NA
32.5 19.50 15.25 10.00 1.50 NA NA
33.0 20.90 17.00 12.20 5.55 NA NA
33.5 22.40 18.50 14.10 8.50 NA NA
34.0 23.60 20.00 16.05 11.00 4.0 NA
34.5 24.90 21.50 17.50 13.00 7.1 NA
35.0 NA 22.75 19.20 14.70 9.7 1.5
35.5 NA 23.90 20.50 16.50 11.9 5.5
我需要在一张图中绘制与第 1 列相关的所有列。我可以通过在初始图中添加点和线来一一完成。例如:
mydata1 = na.omit(data[1:2])
plot(mydata1)
lines(mydata1,col=1)
mydata2 = na.omit(data.frame(c(data[1]),c(data[3])))
points(mydata2, col =2)
lines(mydata2,col=2)
但这太乏味了。我正在考虑使用 for 循环一次绘制所有内容。但似乎只绘制了最后一个:
for (i in 2:ncol(data)){
mydata = na.omit(data.frame(c(data[1]),c(data[i])))
plot(mydata)
lines(mydata)
}
我如何在 R 中做到这一点?感谢您的帮助。
这是最终的解决方案:
plot(0,0,xlim=c(28,37),ylim=c(0,25),type="n",ylab = "T", xlab = "Sal")
for (i in 2:ncol(data)){
mydata = na.omit(data.frame(c(data[1]),c(data[i])))
lines(mydata, col = i)
legendN = colnames(data)
legendN = legendN[2:7]
legend("topleft", legend = legendN, col= 2:7, pch=1) # optional legend
}
【问题讨论】:
-
也许会抛出
plot()在循环之外?线和点留在循环中。 -
不会那样工作。