将data.table链分为两行代码以提高可读性 [英] Break data.table chain into two lines of code for readability
问题描述
我正在处理Rmarkdown文档,并被告知严格限制最大列数(空白列)为100.在文档的代码块中,我使用了许多不同的包,其中包括 data.表格
.
I'm working on a Rmarkdown document, and was told to strictly limit to a maximum number of columns (margin column) of 100. In the document's code chunks I used many different packages, among which is data.table
.
为了遵守限制,我可以将链条(甚至是长命令)分开,例如:
In order to comply with the limit I can split chains (and even long commands) like:
p <- ggplot(foo,aes(bar,foo2))+
geom_line()+
stat_smooth()
bar <- sum(long_variable_name_here,
na.rm=TRUE)
foo <- bar %>%
group_by(var) %>%
summarize(var2=sum(foo2))
但是我无法拆分 data.table
链,因为它会产生错误.我该如何实现这样的目标?
but I can't split a data.table
chain, as it produces an error. How can I achieve something like this?
bar <- foo[,.(long_name_here=sum(foo2)),by=var]
[order(-long_name_here)]
最后一行当然会导致错误.谢谢!
Last line, of course, causes an error. Thanks!
推荐答案
您必须在每行的 [
和]
之间给出一个返回值.如何将 data.table 代码划分为几行的示例:
You have to give a return between the [
and ]
of each line. An example for how to divide your data.table code over several lines:
bar <- foo[, .(long_name_here = sum(foo2)), by = var
][order(-long_name_here)]
您还可以在每个逗号之前/之后给一个回报.逗号前有返回值的示例(我的偏爱):
You can also give a return before / after each comma. An example with a return before the comma (my preference):
bar <- foo[, .(long_name_here = sum(foo2))
, by = var
][order(-long_name_here)
, long_name_2 := long_name_here * 10]
有关扩展示例,请参见此答案
See this answer for an extended example
这篇关于将data.table链分为两行代码以提高可读性的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!