小编Luc*_*ion的帖子

使用Rstudio作为其他编程语言的IDE(Stata)

我喜欢Rstudio IDE和轻松点击git(hub)集成.

我可以将Rstudio用作其他编程语言的IDE吗?

特别是,除了R/Rstudio之外,我还经常使用Stata.Stata很棒,但编程环境(文件编辑器)落后了数年.根据本指南,Stata可以设置为从其他文本编辑器(Emacs等)运行.

我可以把它设置为从Rstudio运行吗?Rstudio可以支持Stata语言的语法高亮吗?如果是这样,我可以在Rstudio中添加一个快捷方式或命令来执行Stata代码块吗?

ide text-editor stata rstudio

5
推荐指数
0
解决办法
753
查看次数

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

在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
查看次数

将访客计数和分析添加到 R blogdown &gt; netlify 托管网站

我正在使用 R blogdown (使用 Hugo 模板)创建我的个人网站(此处)。该网站托管在 github 上,我设法让它与 netlify 持续集成。

我想跟踪一些访客分析。

如何添加访客计数和某种访客分析工具?

Netlify 可以与谷歌分析或类似工具集成吗?

google-analytics r hugo netlify blogdown

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

在R /σ中用3层(三部分)可视化图形/网络

我有一个"分层"网络,有3层,比方说父母(P),孩子(C),孙子(G).边缘总是朝向年轻一代(专利 - >儿童,儿童 - >孙子或父母 - >孙子).同一代中的顶点之间没有边.该图由3个边列表(P_C,C_G,P_C)表示.下面给出一个简短的例子.

1)这种图形/网络的适当术语是什么?三方图?因此,我认为这是一个特殊情况,因为缺乏反向连接.

2)如何在R(igraph)中将其表示为图形对象?

3)我可以用描绘"层"的方式绘制图形,每个组(P,C,GC)的所有顶点在相同的x坐标处对齐,从左边的P,中间的C和GC的严谨性?

4)我可以检查具有这种结构的图之间的图同构,同时考虑数据的分层性质.(我知道对于常规图形,它将是graph.isomorphic()函数).

edge_P_C <- read.table(text="P C
A B
A C", header=T)

edge_C_G <- read.table(text="C G
B D
B E
C F", header=T)

edge_P_G <- read.table(text="P G
A G", header=T)
Run Code Online (Sandbox Code Playgroud)

r igraph

4
推荐指数
1
解决办法
1622
查看次数

根据向量new_varname,old_varname在dplyr中重命名变量名

是否有一种"dplyr方式"来基于变量名称转换器(vt)重命名data.frame中的变量子集,data.frame包含具有旧变量名和新变量名的列(分别为old_varname和new_varname).例如:

d <- iris
vt <- data.frame(old_varname=c('Sepal.Length','Petal.Length'),
                  new_varname=c('a','b'))
d <- d %>% rename_( .... )
#In base R code, this would be:
names(d)[names(d) %in% vt$old_varname] <- vt$std_varname
Run Code Online (Sandbox Code Playgroud)

编辑:进一步澄清:

  • 假设要翻译的变量的向量非常长,因此手动编写新旧名称对是不可行的
  • 要重命名的变量是总变量的子集,我仍然希望保留所有变量

r rename dplyr

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

为什么`pivot_wider`不适用于`data.table`

长到宽枢轴的简单示例:

library(tidyverse)
library(data.table)

df <- data.frame(names=letters[1:3],values=1:3)
df %>% pivot_wider(names_from=names,values_from=values)
#works

dt <- data.table(names=letters[1:3],values=1:3)
dt %>% pivot_wider(names_from=names,values_from=values)
Error in data.frame(row = row_id, col = col_id) : 
  arguments imply differing number of rows: 0, 3
Run Code Online (Sandbox Code Playgroud)

为什么会发生这个错误?

PS:一种解决方法是使用as.data.frame(dt).

dt %>% as.data.frame %>% pivot_wider(names_from=names,values_from=values)
#works
Run Code Online (Sandbox Code Playgroud)

pivot-table r data.table tidyr tidyverse

4
推荐指数
1
解决办法
192
查看次数

R:管道(%>%)不适用于圆形().例如:136/13.00%>%round()= 10.46154

为什么136/13.00 %>% round()返回10?没有piper的相同输入返回正确的值

136/13.00 %>% round()
[1] 10.46154
> round(136/13.00)
[1] 10
10.46154 %>% round()
[1] 10
Run Code Online (Sandbox Code Playgroud)

r rounding piping

3
推荐指数
1
解决办法
131
查看次数

如何在 ggplot2 散点图中的每个点下方添加 x 轴刻度和标签

假设我有这个情节

iris2 <- iris %>% data.table
iris2 <- iris2[Sepal.Length<6]
iris2[,Sepal.Width:=mean(Sepal.Width),by=Sepal.Length]
iris2 %>% ggplot(aes(x=Sepal.Length,y=Sepal.Width,color=Species,group=Species)) + 
  geom_line() + geom_point()
Run Code Online (Sandbox Code Playgroud)

其呈现:

在此输入图像描述

如何添加轴刻度和标签,以便每个点都有相应的刻度和标签?

r ggplot2 axis-labels

3
推荐指数
1
解决办法
2210
查看次数

R:将LaF(读取固定的列宽数据FAST)与SAScii一起使用(解析SAS字典以获取导入说明)

我正在尝试根据SAS导入文件(声明列宽的文件等)将R ASCII固定列宽数据集快速读入R中。

我知道我可以使用SAScii R包来翻译SAS导入文件(parse.SAScii)和实际导入(read.SAScii)。它可以工作,但是速度太慢,因为read.SAScii使用read.fwf进行数据导入,这很慢。我想将其更改为“ LaF”包中的快速导入方法laf_open_fwf。

我几乎可以使用parse.SAScii()和laf_open_fwf(),但是我能够正确地将parse.SAScii()的输出连接到laf_open_fwf()的参数。

这是代码,数据来自PNAD(2013年全国家庭调查):

# Set working dir.
  setwd("C:/User/Desktop/folder")

# installing packages: 
    install.packages("SAScii")
    install.packages("LaF")
    library(SAScii)
    library(LaF)

# Donwload and unzip data and documentation files
  # Data
    file_url <- "ftp://ftp.ibge.gov.br/Trabalho_e_Rendimento/Pesquisa_Nacional_por_Amostra_de_Domicilios_anual/microdados/2013/Dados.zip"
    download.file(file_url,"Dados.zip", mode="wb")
    unzip("Dados.zip")
  # Documentation files
    file_url <- "ftp://ftp.ibge.gov.br/Trabalho_e_Rendimento/Pesquisa_Nacional_por_Amostra_de_Domicilios_anual/microdados/2013/Dicionarios_e_input_20150814.zip"
    download.file(file_url,"Dicionarios_e_input.zip", mode="wb")
    unzip("Dicionarios_e_input.zip")

# importing with read.SAScii(), based on read.fwf(): Works fine
    dom.pnad2013.teste1 <- read.SAScii("Dados/DOM2013.txt","Dicionarios_e_input/input DOM2013.txt")

# importing with parse.SAScii() and laf_open_fwf() : stuck here
    dic_dom2013 <- parse.SAScii("Dicionarios_e_input/input DOM2013.txt")
    head(dic_dom2013)
    data <- laf_open_fwf("Dados/DOM2013.txt", 
                      column_types=?????  ,
                      column_widths=dic_dom2013[,"width"],
                      column_names=dic_dom2013[,"Varname"])
Run Code Online (Sandbox Code Playgroud)

我陷入最后一个命令,将导入参数传递给laf_open_fwf()。

import r

2
推荐指数
1
解决办法
1317
查看次数

设置 R 中函数参数的可能值(例如:f &lt;- function(x){},其中 x 必须是“a”或“b”)

在 R 中,如何定义一个f <- function(x){...}只能将参数设为xor'a'的函数'b'

[顺便说一句,当前(截至 2020 年)在 R 中创建函数的最佳/简单/实用包是什么?还是氧气吗?]

arguments r function

2
推荐指数
1
解决办法
1303
查看次数