使用dplyr的管道功能将数据导出为R中的data.frame对象
我在data.frame中有数据,我将尝试dplyr包的管道功能,以在R中执行一些管道操作。例如,给定dataframe对象,首先我将执行子集,然后导出为csv文件格式。我正在研究dplyr软件包的特性,因此对此并不完全理解。有什么帮助吗? 以下是模拟的简单可再现示例:使用dplyr的管道功能将数据导出为R中的data.frame对象,r,dplyr,R,Dplyr,我在data.frame中有数据,我将尝试dplyr包的管道功能,以在R中执行一些管道操作。例如,给定dataframe对象,首先我将执行子集,然后导出为csv文件格式。我正在研究dplyr软件包的特性,因此对此并不完全理解。有什么帮助吗? 以下是模拟的简单可再现示例: a <- GRanges( seqnames=Rle(c("chr1", "chr2", "chr3", "chr4"), c(3, 2, 1, 2)), ranges=IRanges(seq(1, by=9, l
a <- GRanges(
seqnames=Rle(c("chr1", "chr2", "chr3", "chr4"), c(3, 2, 1, 2)),
ranges=IRanges(seq(1, by=9, len=8), seq(7, by=9, len=8)),
rangeName=letters[seq(1:8)], score=sample(1:20, 8, replace = FALSE))
a%子集(pvalue<1e-4&pvalue>1e-9)
然后想利用dplyr的特性做几个管道操作:
a %>% subset(pvalue < 1e-4 & pvalue > 1e-9) %>% write.table(x, "foo.csv") %>% as.data.frame(x)
a%%>%子集(pvalue<1e-4&pvalue>1e-9)%%>%write.table(x,“foo.csv”)%%>%as.data.frame(x)
但当我做第二步时,我有一个错误。如果我需要做一些管道工作,比如第一个的结果在第二个中使用,那么我如何使用dplyr包在R中进行这项工作?感谢使用
iris
,您可以:
一些旁白:
更像是一种基本的R方法。为什么不使用,例如子集
,过滤器
,等等选择
- 管道参数(现在不仅仅是一个
操作符)将左侧作为第一个参数抛出到右侧,因此dplyr
无法按预期工作write.table(x,…)
- 由于
与dplyr
s一起工作,您不需要data.frame
as.data.frame
groupby
和do
。首先创建一个分类变量,将数据拆分为所需的子集。下面是一个有效的示例:
iris %>% mutate(
slcat = cut(Sepal.Length, c(0, 4, 5, 6, 8)),
filename = paste0("file", slcat, ".csv")
) %>%
group_by(slcat) %>%
do(result = write.csv(., file = .$filename[1]))
如果你需要写在一个链的中间,使用MaGriTr的代码> %t> % >谢谢你的快速响应。是否有任何现有的线程可以更具体地解释dplyr的管道特性?我想知道我需要看看它并学习。见上面的链接/。完美的起点;-)谢谢,我会处理的。我已经接受文森特的回答了。在这种情况下,我也应该接受你的吗?这两个答案对我来说都是可行的。谢谢你这一个很好;-)
iris %>% filter(Sepal.Length > 5.2) %>% write.table("foo.csv")
iris %>% mutate(
slcat = cut(Sepal.Length, c(0, 4, 5, 6, 8)),
filename = paste0("file", slcat, ".csv")
) %>%
group_by(slcat) %>%
do(result = write.csv(., file = .$filename[1]))