我正在编写一个包,以方便进口巴西社会经济微观数据集(人口普查,PNAD等).我预见该包的两个不同用户组:
巴西的用户可能会对使用葡萄牙语的文档感到更放心.可能在某种程度上可以理解英语,但是外语可能会使包装感觉不那么"符合人体工程学".
更广泛的国际用户社区,英语文档可能是必要条件.
是否可以以文档"双语"(英语和葡萄牙语)的方式编写包,并且向用户显示的语言将取决于他们的国家/语言设置?
也,
这在roxygen2文档框架中是否可行?
我意识到,通过使包装更加复杂和难以维护,使包装更加用户友好是一种权衡.从以前的经验来看这种权衡的一般评论也是受欢迎的.
编辑:根据评论的建议,我交叉发布了r-package-devel mailling list.在这里,然后按照底部的答案.Duncan Murdoch发布了一个有趣的答案,内容涵盖了@Brandons回答(贝娄)的一些内容,还包括我认为有用的两个额外建议:
有一种语言的包,但不同语言的插图.我会遵循这个建议.
必须使用软件包的版本,比方说1.1和1.2,每种语言一个
我正在尝试在降价文档中嵌入一个由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) 我试图使用新的"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 blogdown 包来创建我的个人网站。我基于 Hugo-academic 主题(代码在这里)
我想在出版物中添加一个“工作文件”部分。在我的学科经济学中,我们通常有
我该如何添加?
我需要改变 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中的正则表达式将字符串向量分解为多个变量,最好使用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)
我想:
这将是结果
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命令语法中明确表示要恢复的部分是什么以及要省略哪些部分.
我创建了一个 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))
我使用 R 制作了这个甘特图diagrammer::mermaid(下面的可重现代码):
这很好,但我想:
我怎样才能实施这些改变?
我是一名 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) 我有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是在所规定的范围start和end。正确的期望结果在变量中x_desired。
我以为可以做到这一点:
test[,x:=(year %in% start:end)]
Run Code Online (Sandbox Code Playgroud)
但是结果显然是不正确的。我想逐行定义范围,但不知道如何表达。
令人惊讶的是我没有找到这个简单问题的答案。我需要一种管道友好的方法来计算向量中非零元素的数量。
不带管道:
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中,我有两个包含列表列的数据框
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添加了更多组,因此分组变量重叠.这打破了一些建议的解决方案