小编Luc*_*ion的帖子

R包中的双语(英语和葡萄牙语)文档

我正在编写一个包,以方便进口巴西社会经济微观数据集(人口普查,PNAD等).我预见该包的两个不同用户组:

  • 巴西的用户可能会对使用葡萄牙语的文档感到更放心.可能在某种程度上可以理解英语,但是外语可能会使包装感觉不那么"符合人体工程学".

  • 更广泛的国际用户社区,英语文档可能是必要条件.

是否可以以文档"双语"(英语和葡萄牙语)的方式编写包,并且向用户显示的语言将取决于他们的国家/语言设置?

也,

这在roxygen2文档框架中是否可行?

我意识到,通过使包装更加复杂和难以维护,使包装更加用户友好是一种权衡.从以前的经验来看这种权衡的一般评论也是受欢迎的.

编辑:根据评论的建议,我交叉发布了r-package-devel mailling list.在这里,然后按照底部的答案.Duncan Murdoch发布了一个有趣的答案,内容涵盖了@Brandons回答(贝娄)的一些内容,还包括我认为有用的两个额外建议:

  • 有一种语言的包,但不同语言的插图.我会遵循这个建议.

  • 必须使用软件包的版本,比方说1.1和1.2,每种语言一个

documentation r package roxygen2

22
推荐指数
1
解决办法
359
查看次数

在Markdown中制作格式良好的表:knitr不编译stargazer> html表

我正在尝试在降价文档中嵌入一个由stargazer函数很好地格式化的输出表.

我尝试将stargazer()嵌入到Rmd文档的R代码块中:

```{r}
library(stargazer)
stargazer(cor(attitude), type="html")
```
Run Code Online (Sandbox Code Playgroud)

代码运行正常,但它输出的html代码又不被knitr解析,因此实际的表格html"source"代码显示在渲染文档中.

我知道这个类似的问题(这里).我问一个单独的问题,因为那里的大多数答案表明,观星者不支持html输出,这不再是真的.在那之后,Html支持可能被纳入了观星者(并且我没有在那里重新开放或发表评论).

这似乎与使knitr编译html表源代码的更简单问题有关.

编辑:@hrbrmstr在下面的评论中给了我答案,这是:

```{r results='asis'}
library(stargazer)
stargazer(cor(attitude), type="html")
```
Run Code Online (Sandbox Code Playgroud)

html r knitr stargazer

9
推荐指数
1
解决办法
3745
查看次数

如何使用sf :: st_centroid计算多边形的质心?

我试图使用新的"sf"包来操纵R中的一些巴西人口普查数据.我能够导入数据,但是当我尝试创建原始多边形的质心时出现错误

library(sf)

#Donwload data  
filepath <- 'ftp://geoftp.ibge.gov.br/organizacao_do_territorio/malhas_territoriais/malhas_de_setores_censitarios__divisoes_intramunicipais/censo_2010/setores_censitarios_shp/ac/ac_setores_censitarios.zip'
download.file(filepath,'ac_setores_censitarios.zip')
unzip('ac_setores_censitarios.zip')
d <- st_read('12SEE250GC_SIR.shp',stringsAsFactors = F) 
Run Code Online (Sandbox Code Playgroud)

现在我尝试创建一个包含"几何体"列的质心的新几何列,但是会收到错误:

d$centroid <- st_centroid(d$geometry)
Warning message:
In st_centroid.sfc(d$geometry) :
  st_centroid does not give correct centroids for longitude/latitude data
Run Code Online (Sandbox Code Playgroud)

我怎么解决这个问题?

r polygon centroid r-sf

8
推荐指数
1
解决办法
5264
查看次数

将“工作论文”部分(在出版物中)添加到 Hugo-academic 网站

我正在使用 R blogdown 包来创建我的个人网站。我基于 Hugo-academic 主题(代码在这里

我想在出版物中添加一个“工作文件”部分。在我的学科经济学中,我们通常有

  • “工作文件”(pdf 可用)
  • “正在进行中”(还没有 pdf)
  • “出版物”

我该如何添加?

我需要改变 Hugo-academic 主题的内部结构吗?(我是一个 R 用户/程序员,几乎没有 webdev 知识)

我发布为 github 问题:hugo-academic/issues/416

编辑:我还想让“选定出版物”部分消失。即使selected = false在所有出版物 .md 文件上设置后,我也无法做到这一点。这是在 github 问题中提出的:hugo-academic/issues/417

Edit2:我还想添加一个新的“进行中的工作”部分(hugo-academic/issues/418)。

编辑 3:@jsb 下面的回答不会改变论文按类型(工作论文、正在进行的工作、同行评审)分组的方式,这是我的主要关注点。但它确实将这些类别添加到元数据中(并修复了问题二)。

按照我现在理解的方式,我必须为“工作论文”和“正在进行的工作”添加新的小部件。我想我可以通过类比现有的小部件来创建它们。

代码中的什么地方定义了小部件?

r hugo blogdown

8
推荐指数
1
解决办法
1779
查看次数

使用tidyr :: extract regex将字符串分成几列

我正在尝试使用R中的正则表达式将字符串向量分解为多个变量,最好使用tidyr :: extract命令以dplyr-tidyr方式.对于矢量波纹中的不确定性:

sasdic <- data.frame(a=c(
  '@1   ANO_CENSO   5.  /*Ano do Censo*/',
  '@71  TP_SEXO $Char1. /*Sexo*/',
  '@72  TP_COR_RACA $Char1. /*Cor/raça*/',
  '@74  FK_COD_PAIS_ORIGEM  4.  /*Código País de origem*/' )) 
Run Code Online (Sandbox Code Playgroud)

我想:

  • 第一个数字([0-9] +)转到变量"int_pos"
  • 由下划线([a-zA-Z _] +)连接的变量名称转到变量"var_name"
  • 转到var"x"的第二个数字或术语$ Char1(可能是$ Char2等).我想([0-9] + | $ Char [0-9] +)可以选择这个吗?
  • 最后,无论是在"/*... /"之间进入变量"label"(不知道正则表达式).所有其他中间字符(空格,".","/"," "应该被忽略)

这将是结果

d <- data.frame(int_pos=c(1,72,72,74),
                var_name=c('ANO_CENSO','TP_SEXO','TP_COR_RACA','FK_COD_PAIS_ORIGEM'),
                x=c('5','Chart1','$Char1','4'),
                label=c('Ano do Censo','Sexo','Cor/raça','Código País de origem') )
Run Code Online (Sandbox Code Playgroud)

我试着为此构建一个正则表达式.这是我到目前为止所得到的:

sasdic %>% extract(a, c('int_pos','var_name','x','label'), 
                   "([0-9]+)([a-zA-Z_]+)([0-9]+|$Char[0-9]+)(something to get the label") 
             -> d
Run Code Online (Sandbox Code Playgroud)

正则表达式之上是不完整的.另外,我不知道如何在extract命令语法中明确表示要恢复的部分是什么以及要省略哪些部分.

regex r tidyr

7
推荐指数
2
解决办法
1376
查看次数

ggplot2 条形图上的标签被剪切

我创建了一个 ggplot2 条形图,并在条形上方添加了一个带有条形 y 值的标签。

d <- data.frame(
       Ano=2000+5*0:10,
       Populacao =c(6.1,6.5,6.9,7.3,7.7,8.0,8.3,8.6,8.9,9.1,9.3)
     )
d %>% ggplot(aes(x=Ano, y=Populacao)) + geom_bar(stat="identity") +
  geom_text(aes(label=Populacao), vjust=-0.5) 
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

请注意最高列上的标签是如何被剪切的。

有没有办法让绘图自动调整以适应标签的存在?

编辑:我知道我可以手动调整scale_y_continuous(breaks=seq(0, 10, 1), limits=c(0,10))

label r ggplot2 geom-bar

7
推荐指数
0
解决办法
2251
查看次数

在 DyagrammeR&gt;mermaid&gt;gantt 图表中更改字体和时间 aixis 标签

我使用 R 制作了这个甘特图diagrammer::mermaid(下面的可重现代码):

在此输入图像描述

这很好,但我想:

  1. 增加字体大小(我想这会让每行更宽,使当前很长的矩形稍微更“方形”。我对此很满意)
  2. 使t-aixis标签更加标准。对某些人来说几周,对另一些人来说几个月似乎很奇怪。我希望能够以简洁的方式区分月份和年份)

我怎样才能实施这些改变?

我是一名 R 用户,对 Node.js、CSS 等一无所知。我设法在互联网上找到代码片段来创建它,但不了解任何有关style_widget或如何更改它的信息。

devtools::install_github('rich-iannone/DiagrammeR')
library(DiagrammeR)
library(tidyverse) #just for the pipe operator

style_widget <- function(hw=NULL, style="", addl_selector="") {
  stopifnot(!is.null(hw), inherits(hw, "htmlwidget"))

  # use current id of htmlwidget if already specified
  elementId <- hw$elementId
  if(is.null(elementId)) {
    # borrow htmlwidgets unique id creator
    elementId <- sprintf(
      'htmlwidget-%s',
      htmlwidgets:::createWidgetId()
    )
    hw$elementId <- elementId
  }

  htmlwidgets::prependContent(
    hw,
    htmltools::tags$style(
      sprintf(
        "#%s %s {%s}",
        elementId,
        addl_selector,
        style
      )
    )
  )
} 


flx_BmP  <- mermaid(" …
Run Code Online (Sandbox Code Playgroud)

gantt-chart mermaid diagrammer

6
推荐指数
1
解决办法
2794
查看次数

创建标志,指示年变量是否在data.table中的start:end变量范围内

我有3个日期变量data.table: ,year,。startend

test <- data.table(year=2001:2003,start=c(2003,2002,2000),end=c(2003,2004,2002),x_desired=c(F,T,F))
Run Code Online (Sandbox Code Playgroud)

Ò希望创建一个新的变量x,指示,对于每一行,如果year是在所规定的范围startend。正确的期望结果在变量中x_desired

我以为可以做到这一点:

test[,x:=(year %in% start:end)]
Run Code Online (Sandbox Code Playgroud)

但是结果显然是不正确的。我想逐行定义范围,但不知道如何表达。

r data.table

6
推荐指数
1
解决办法
60
查看次数

通过管道/dplyr 友好的方式过滤向量的非零元素

令人惊讶的是我没有找到这个简单问题的答案。我需要一种管道友好的方法来计算向量中非零元素的数量。

不带管道:

v <- c(1.1,2.2,0,0)
length(which(v != 0))
Run Code Online (Sandbox Code Playgroud)

当我尝试使用管道执行此操作时,出现错误

v %>% which(. != 0) %>% length
Error in which(., . != 0) : argument to 'which' is not logical
Run Code Online (Sandbox Code Playgroud)

dplyr 解决方案也会有所帮助

r pipe dplyr tidyverse

6
推荐指数
1
解决办法
645
查看次数

如何根据属于另一个向量的一个向量合并向量列表?

在R中,我有两个包含列表列的数据框

d1 <- data.table(
  group_id1=1:4
)
d1$Cat_grouped <- list(letters[1:2],letters[3:2],letters[3:6],letters[11:12] )
Run Code Online (Sandbox Code Playgroud)

d_grouped <- data.table(
  group_id2=1:4
)
d_grouped$Cat_grouped <- list(letters[1:5],letters[6:10],letters[1:2],letters[1] )
Run Code Online (Sandbox Code Playgroud)

我想合并这两个data.tables基于d1$Cat_grouped包含在向量中的向量d_grouped$Cat_grouped

更确切地说,可能有两个匹配标准:

a)每个向量的所有元素d1$Cat_grouped必须在匹配的向量中d_grouped$Cat_grouped

导致以下匹配:

result_a <- data.table(
   group_id1=c(1,2)
   group_id2=c(1,1)
)
Run Code Online (Sandbox Code Playgroud)

b)每个向量中的至少一个元素d1$Cat_grouped必须在匹配的向量中d_grouped$Cat_grouped

导致以下匹配:

result_b <- data.table(
  group_id1=c(1,2,3,3),
  group_id2=c(1,1,1,2)
)
Run Code Online (Sandbox Code Playgroud)

我该如何实现a)或b)?优选地,以数据表格的方式.

EDIT1:添加了a)和b)的预期结果

EDIT2:向d_grouped添加了更多组,因此分组变量重叠.这打破了一些建议的解决方案

merge r list data.table

5
推荐指数
1
解决办法
101
查看次数