我几天来一直在寻找这个问题的答案,但是没有找到答案,并且认为是时候来这里并自己发表一个问题了。我使用带有read.csv()
标记的as.is=TRUE
读取了数据框。
x$night <- as.Date(x$night)
x$gsub_version <- as.numeric(x$gsub_version)
x$gsub_version <- x$gsub_version + 1
head(x)
night filter mag mag_err gsub_version
2013-10-08 B 17.67273 0.003226886 1
2013-10-08 B 17.80228 0.003165991 2
为了节省空间,我剪切了结果。我想用filter=='V'
和col=factor(x$gsub_version)
绘制数据。
plot(mag ~ night, data=x[x$filter=="V",], ylim=c(21,17), col=factor(x$gsub_version))
不幸的是,在某一点之后,这会产生plot这个颜色不正确的颜色。当我包含为filter
变量创建专用数据框的额外步骤时,该图看起来是正确的。
y <- x[x$filter=="V",]
plot(mag ~ night, data=y, ylim=c(21,17), col=factor(y$gsub_version))
这是生成的new plot。新图正确使用gsub_version
的值。我的问题是双重的:考虑到y由用于制作第一个图的相同子集组成,以及为什么第一个方法失败,是什么使这两种方法不同?
感谢您抽出宝贵时间阅读本文。
答案 0 :(得分:0)
评论中提到了这个问题。添加此答案以说明此类事情使用data.table
:
library(data.table)
setDT(x) #convert from data.frame to data.table
x[filter == "V", plot(mag ~ night, ylim = c(21, 17), col = factor(gsub_version))]
干净,透明,没有跟踪哪个向量被子集化的混乱 - 所有子集都在[]
的第一个参数中完成。