小编Koz*_*ska的帖子

在公式两侧使用 .data 代词的小面网格不起作用

我正在尝试设计一个交互式情节。我希望用户指定facet_grid公式,但是如果在公式代词的两侧,.data它不起作用。有什么解决办法吗?

left  <- 'Species'
right <- 'Petal.Width' 

### not working 
ggplot(iris, aes(y = Sepal.Length, x = Sepal.Width)) + 
  geom_line() + 
  facet_grid(.data[[left]] ~ .data[[right]])

### working 
ggplot(iris, aes(y = Sepal.Length, x = Sepal.Width)) + 
  geom_line() + 
  facet_grid(.data[[left]] ~ .)
Run Code Online (Sandbox Code Playgroud)

以下是 R 会话详细信息

R version 4.0.4 (2021-02-15)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 19044)

Matrix products: default

locale:
[1] LC_COLLATE=English_Israel.1252  LC_CTYPE=English_Israel.1252    LC_MONETARY=English_Israel.1252
[4] LC_NUMERIC=C                    LC_TIME=English_Israel.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods …
Run Code Online (Sandbox Code Playgroud)

plot r ggplot2 tidyverse

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

使用 model.matrix 进行 One-hot 编码

model.matrix 中有一些我不明白的东西。当我输入一个没有截距的二进制变量时,它返回两个级别。

> temp.data <- data.frame('x' = sample(c('A', 'B'), 1000, replace = TRUE))
> temp.data.table <- model.matrix( ~ 0 + x, data = temp.data)
> head(temp.data.table)
  xA xB
1  1  0
2  0  1
3  0  1
4  0  1
5  1  0
6  0  1
Run Code Online (Sandbox Code Playgroud)

但是,当我输入另一个二进制级别时,它仅创建 3 列。这是为什么?是什么让函数的行为突然不同?我怎样才能避免它?

> temp.data <- data.frame('x' = sample(c('A', 'B'), 1000, replace = TRUE),
+                         'y' = sample(c('J', 'D'), 1000, replace = TRUE))
> temp.data.table <- model.matrix( ~ 0 + x + y, data …
Run Code Online (Sandbox Code Playgroud)

r one-hot-encoding

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

R max 函数在“dplyr”中使用时返回伪值

我将 R 的 max 函数与包中的summarise函数结合使用,dplyr并且在max函数的参数中有一个错字na.rm。我错误地编写ns.rm = T并且脚本在没有任何警告消息的情况下工作并返回了错误的值。在简单向量(外部环境)上替换na.rmwithns.rmdplyr,该函数返回正确的值,如果输入向量成立,NA则它返回一个NA值,而没有任何关于使用错误参数的警告。

下面是一个例子:

if(!require('magrittr')) install.packges('magrittr')
if(!require('dplyr'))    install.packges('dplyr')

tab <- data.frame("grp1" = sort(rep(1:4, 5)), 
                  "grp2" = rep(c(1:2), 10),
                  "val" = rnorm(20))


tab

   grp1 grp2         val
1     1    1  0.03536351
2     1    2  1.04237251
3     1    1  0.82735937
4     1    2  0.29040424
5     1    1  0.30194926
6     2    2 -0.96649026
7     2    1 -0.97388257
8     2    2 …
Run Code Online (Sandbox Code Playgroud)

r max dplyr

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

将多个字符列映射到数值的最快方法

我有一个算法,该算法在每次迭代时都会计算某些组的均值(这些组不会仅更改其值)。

值表-

d1 <- data.frame(x = sample(LETTERS, N, replace = TRUE), 
                  y1=rnorm(N))
head(d1)
#   x         y1
# 1 H -0.7852538
# 2 G -0.6739159
# 3 V -1.7783771
# 4 L -0.2849846
# 5 I -0.1760284
# 6 V -0.2785826
Run Code Online (Sandbox Code Playgroud)

我可以计算平均值(以几种方式:dplyr,data.table和tapply)。我有另一个data.frame,其中包含两列具有组名的列。

d2 <- data.frame('group.high' = sample(LETTERS, N * 2, replace = TRUE), 
                 'group.low' = sample(LETTERS, N * 2, replace = TRUE))
head(d2)
#   group.high group.low
# 1          U         L
# 2          K         J
# 3          C         Q
# 4          Q …
Run Code Online (Sandbox Code Playgroud)

join r dplyr data.table

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

Rcpp 函数导致包崩溃

我有一个包https://github.com/tfrostig/RSEE,其中包含几 (3) 个 RcppArmadillo 函数。该软件包在其他计算机上运行良好。当我构建包时没有出现错误,但是每当我调用任何 RCPP 函数时,它都会导致 R 崩溃。

当我尝试使用我的单元测试时,我收到错误: "Exited with status -1073741819" 。

如果我使用Rcpp::sourceCpp()然后调用函数,一切正常。其他带有 Rcpp 函数的包运行良好。

例如:

`// [[Rcpp::depends(RcppArmadillo)]]
#include <RcppArmadillo.h>
using namespace Rcpp;
using namespace arma;


// [[Rcpp::export]]
arma::mat localRegression(arma::mat weightmat, arma::mat modelmat, arma::vec xtemp) {
  return inv(modelmat.t() * weightmat * modelmat) * modelmat.t() * weightmat * xtemp;
}
Run Code Online (Sandbox Code Playgroud)

使用RSEE:::localRegression会导致它崩溃。如果我使用加载源代码sourceCpp然后调用localRegression它就可以了。

什么会导致这种类型的问题?

The session info is: 
R version 4.0.3 (2020-10-10)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 …
Run Code Online (Sandbox Code Playgroud)

r package rcpp rcpparmadillo

0
推荐指数
1
解决办法
38
查看次数