我正在尝试设计一个交互式情节。我希望用户指定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) 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 的 max 函数与包中的summarise函数结合使用,dplyr并且在max函数的参数中有一个错字na.rm。我错误地编写ns.rm = T并且脚本在没有任何警告消息的情况下工作并返回了错误的值。在简单向量(外部环境)上替换na.rmwithns.rm时dplyr,该函数返回正确的值,如果输入向量成立,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) 我有一个算法,该算法在每次迭代时都会计算某些组的均值(这些组不会仅更改其值)。
值表-
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) 我有一个包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)