将数据集拆分为R中的两个数据集(用于通过Shiny引导的ggplot2)

时间:2013-07-18 20:51:26

标签: r ggplot2 shiny

我在这里看到了一些类似的问题,但没有一个像我一样 - 或者如果它们是相同的,我不认识它,作为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可以识别为有效的数据集。实际上,我想将它们作为直方图叠加在同一个图上。

有一个简单的方法可以做到这一点,但我不是开始了吗?建议或指示欢迎。

2 个答案:

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

enter image description here

datalist <- split(mtcars, mtcars$am)

ggplot(datalist[[1]], aes(x=wt, y=mpg)) + geom_point()

enter image description here

(我猜你想要qplot(wt, data=datalist[[1]], colour="cyan") ,但这是一个无关的问题。)

可以在此处看到子集/提取运算符的差异:

colour=I("cyan")