我在这里看到了一些类似的问题,但没有一个像我一样 - 或者如果它们是相同的,我不认识它,作为R编程的新手(我用其他许多语言编程,但是不是R!)
我有一个来自csv文件的输入数据集,我用read.csv转换。数据集可能包含也可能不包含两个组。我发现我可以按如下方式拆分组:
datalist <- split(mydata, mydata$group)
然后我回来的列表与ggplot2不一致(我得到一个错误,它无法绘制列表变量 - 尽管列表变量,如果我将它打印到控制台,显示拆分数据子集?)。好的。但是,如果我那么做
data = as.data.frame(datalist[1])
并将其提供给ggplot2,as.data.frame会破坏我的列名,因此我丢失了我想要绘制的变量的名称。 Augh!
我理想的是将read.csv读取的输入数据拆分为两个独立的变量(数据帧,我把它?)ggplot2可以识别为有效的数据集。实际上,我想将它们作为直方图叠加在同一个图上。
有一个简单的方法可以做到这一点,但我不是开始了吗?建议或指示欢迎。
答案 0 :(得分:2)
如果您只想要一个索引值,那么使用子集可能会更容易(至少对于交互式使用。)
p <- qplot(value, # assuming there is a column named "value"
data = subset(mydata, group==mydata$group[1]),
colour = "cyan")
答案 1 :(得分:1)
split(mydata, mydata$group)
的结果是list
的{{1}}。 data.frame
和[
符号之间存在差异:[[
子集[
从列表中提取的列表。因此[[
是长度为1的列表,仅包含第一个datalist[1]
。 data.frame
是位于第一位置的datalist[[1]]
。由于data.frame
(和ggplot
)期望qplot
,因此您需要第二个(双括号)版本作为评论中提到的@Alex。我不知道为什么你得到你看到的错误,如果没有一个完整的例子就无法诊断它。使用不同的数据集(data.frame
),我看不到它。
mtcars
datalist <- split(mtcars, mtcars$am)
ggplot(datalist[[1]], aes(x=wt, y=mpg)) + geom_point()
(我猜你想要qplot(wt, data=datalist[[1]], colour="cyan")
,但这是一个无关的问题。)
可以在此处看到子集/提取运算符的差异:
colour=I("cyan")