小编Dav*_*uer的帖子

我可以将类似数据帧的列表合并到一个数据帧中吗?

我有一个数据帧:

foo <- list(df1 = data.frame(x=c('a', 'b', 'c'),y = c(1,2,3)), 
            df2 = data.frame(x=c('d', 'e', 'f'),y = c(4,5,6)))
Run Code Online (Sandbox Code Playgroud)

我可以将其转换为表单的单个数据框:

data.frame(x = c('a', 'b', 'c', 'd', 'e', 'f'), y= c(1,2,3,4,5,6))
Run Code Online (Sandbox Code Playgroud)

r list dataframe

30
推荐指数
2
解决办法
4万
查看次数

我应该如何处理R包中的'helper'函数?

背景

我写了一个R包,现在是一个合作者(最近的CS毕业生,他是R的新手)正在编辑和重构代码.在这个过程中,他将我的功能划分为更小,更通用的功能.

他的所作所为是有道理的,但是当我开始时package.skeleton(),每个功能都有一个文件.现在,他添加了主要功能所依赖的功能,但这可能在功能本身之外的使用有限.

他建议所有函数都放在一个文件中,但我反对,因为当我们处理不同的文件时,它更容易进行版本控制.

我已经开始使用roxygen来记录文本中的每个功能.

处理函数的推荐方法是什么:显然辅助函数应该与main函数保持一致,但是我需要在多大程度上记录辅助函数?

@export评论中的建议很有帮助,但我很想知道其他人如何组织他们的代码.

coding-style r package roxygen

28
推荐指数
1
解决办法
4425
查看次数

何时使用R,何时使用SQL?

我有一个中等大小的数据库,有许多连接和查找表.

我比使用SQL更熟悉R,而且我使用的是MySQL.

我的问题:

在什么时候有什么好处停止增加SQL语句的复杂性有利于在R中的数据子集功能(例如,merge,*apply,maply,dlply,等)R.

一方面,SQL的连接比选择每个表的所有内容并使用R merge函数加入它们更容易.此外,在SQL中执行条件选择将减少必须导入到R的数据量; 但速度差异并不显着.

另一方面,与R语法相比,具有复杂where子句的大连接变得不那么容易理解.

下面我有一些未经测试的代码用于说明目的:我在使用代码之前问这个问题,我的问题的答案不需要工作代码(尽管总是赞赏) - "最优雅的方法","最少线条",或"X的惊人实施"总是受到赞赏,但我特别感兴趣的是"最明智/实用/规范/基于第一原则"的理由.

我对哪些步骤应该使用SQL where子句以及哪些步骤使用R更容易实现的一般答案感兴趣.

插图:

数据库描述

有三个表:a,ab,和b.表ab每个都有一个主键id.它们有一个由查找表表示的多对多关系ab,它包含字段ab.a_id并分别ab.b_id连接到a.idb.id.两个表都有一个time字段,一个group字段有一个字段.

目标:

这是我想要做的连接和子集的最小示例;

(MySQL命名元素,例如a.id等同a$id于R)

  1. 连接表ab使用ab,将b.time每个关联的多个值a.id作为新列附加;

    select a_time, b.time, a.id, b.id from 
           a join …
    Run Code Online (Sandbox Code Playgroud)

sql database r data.table

28
推荐指数
2
解决办法
2万
查看次数

与HDF5或netCDF相比,使用.Rdata文件有什么缺点?

我被要求更改当前导出.Rdata文件的软件,以便以"平台无关的二进制格式"导出,例如HDF5或netCDF.有两个原因:

  1. Rdata文件只能由R读取
  2. 二进制信息的存储方式取决于操作系统或体系结构

我还发现 "R数据导入导出手册"没有讨论Rdata文件,尽管它确实讨论了HDF5和netCDF.

对R-帮助的讨论表明,.Rdata文件是平台无关的.

问题:

  1. 这些担忧在多大程度上有效?
    • 例如,Matlab可以在不调用R的情况下读取.Rdata吗?
  2. 在这方面,其他格式比.Rdata文件更有用吗?
  3. 是否有可能编写一个脚本来创建所有.Rdata文件的.hdf5类似物,最大限度地减少对程序本身的更改?

file-format r hdf5 netcdf

27
推荐指数
3
解决办法
5683
查看次数

在xtable中处理Latex反斜杠

我有一个包含以下列的表:

 mytable <- data.frame(beta_0 = c(1,2,3)
Run Code Online (Sandbox Code Playgroud)

我想要做的是在乳胶标记中输出一个带有列标题的表,例如 $\beta_0$

但是,我似乎无法弄清楚如何输出"$\beta_0 $"使用print.xtable:

colnames(mytable) <- "$\beta_0$"
library(xtable)
print(xtable(mytable), include.rownames = F)
Run Code Online (Sandbox Code Playgroud)

返回列标题

\eta\_0\$
Run Code Online (Sandbox Code Playgroud)

代替

$\beta_0$
Run Code Online (Sandbox Code Playgroud)

我认为答案是"sanitize.colnames.function"参数print.xtable,但对我来说如何使用它并不明显,并且?print.xtable没有提供任何示例.

具体来说,我想输出一个乳胶表,如:

\begin{table}[ht]
 \begin{center}
  \begin{tabular}{r}
    \hline
    $\beta_0$ \\ 
    \hline
    1.00 \\ 
    2.00 \\ 
    3.00 \\ 
    \hline
  \end{tabular}
 \end{center}
\end{table}
Run Code Online (Sandbox Code Playgroud)

latex r sweave

27
推荐指数
1
解决办法
7039
查看次数

我怎么在R?

例如,我想根据名称的子集选择行

如果我有以下数据:

data <- structure(c(91, 92, 108, 104, 87, 91, 91, 97, 81, 98), 
.Names = c("fee-", "fi", "fo-", "fum-", "foo-", "foo1234-", "123foo-", 
"fum-", "fum-", "fum-"))
Run Code Online (Sandbox Code Playgroud)

如何选择匹配'foo'的行?

使用grep()不起作用:

 grep('foo', data)
Run Code Online (Sandbox Code Playgroud)

收益:

integer(0)
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?或者,还有更好的方法?

谢谢!

grep r subset

24
推荐指数
2
解决办法
5万
查看次数

如何覆盖.bash_aliases中设置的别名

我喜欢使用bash别名来自定义bash命令.有没有办法覆盖bash别名设置,或者我应该将别名重命名为与原始命令不同的东西.

例如:我的.bash_aliases包括

alias ls='ls -ltr'
Run Code Online (Sandbox Code Playgroud)

如果我只想检索文件名,是否需要将别名重命名为"ls"以外的其他名称?或者还有另一种方式吗?

bash alias

21
推荐指数
2
解决办法
9862
查看次数

Roxygen很好的参考?

除了这里出色的SO答案,还有Roxygen 手册插图,是否有任何特别全面的使用Roxygen指南?

documentation r reference roxygen

20
推荐指数
2
解决办法
2633
查看次数

将外键上的SQL连接转换为R data.table语法

data.table包提供了许多与SQL相同的表处理方法.如果表具有键,则该键由一列或多列组成.但是一个表不能有多个键,因为它不能同时以两种不同的方式排序.

在这个例子中,XYdata.tables的一个单一的键列"ID"; Y还有一个非键列"x_id".

   X <- data.table(id = 1:5, a=4:8,key="id")
   Y <- data.table(id = c(1,1, 3,5,7), x_id=c(1,4:1), key="id")
Run Code Online (Sandbox Code Playgroud)

以下语法将在其键上连接表:

  X[Y]
Run Code Online (Sandbox Code Playgroud)

如何将以下SQL语法转换为data.table代码?

  select * from X join Y on X.id = Y.x_id; 
Run Code Online (Sandbox Code Playgroud)

我得到的最接近的是:

Y[X,list(id, x_id),by = x_id,nomatch=0]
Run Code Online (Sandbox Code Playgroud)

但是,这不会与SQL语句执行相同的内部联接.


这是一个更清晰的例子,其中外键是y_id,我们希望连接查找Y2的值X2$y_id = Y2$id.

    X2 <- data.table(id = 1:5, y_id = c(1,1,2,2,2), key="id")
    Y2 <- data.table(id = 1:5, b = letters[1:5], key="id")
Run Code Online (Sandbox Code Playgroud)

我想制作表格:

   id  y_id  b
    1     1 "a"
    2     1 "a"
    3     2 …
Run Code Online (Sandbox Code Playgroud)

sql r data.table

19
推荐指数
1
解决办法
5827
查看次数

是否可以将ggplot的标题与右边对齐?

我生成的图形将用作三面板图形右侧的标签列,我希望图形的标题与图中的标签一样右对齐.

这是一个最小的例子,我想右对齐标题'单词'.

ggplot() + 
  geom_text(aes(y = 1, x = seq(4), 
                label = c('fee', 'fi', 'fo', 'fum'), 
                hjust = 1)) +      
  opts(title = 'words') + 
  coord_flip() + 
  scale_y_continuous(breaks = c(0,0), limits = c(0,1)) 
Run Code Online (Sandbox Code Playgroud)

产生这个:

在此输入图像描述

更新

@joran的答案很有帮助,但它没有将标签与标签对齐.改变他的代码hjust=1hjust = 0.96接近,但这更像是一个黑客而不是一个令人满意的答案.

r ggplot2

18
推荐指数
1
解决办法
8835
查看次数