相关疑难解决方法(0)

如何在R中实现F#的前向管道运算符?

如何在R中实现F#的前向管道运算符?操作员可以轻松地链接一系列计算.例如,当你有一个输入data,想调用函数foobar顺序,你可以这样写:

data |> foo |> bar
Run Code Online (Sandbox Code Playgroud)

而不是写作bar(foo(data)).好处是您可以避免使用某些括号,并且计算的执行顺序与执行顺序相同(从左到右).在F#中,运算符定义如下:

let (|>) a f = f a
Run Code Online (Sandbox Code Playgroud)

看起来%...%可以用于二元运算符,但是它如何工作?

f# r

16
推荐指数
3
解决办法
1200
查看次数

编写自己的/自定义的管道运算符

我想编写一个自定义管道运算符,其中使用的运算符名称为 open。它可能是例如%>%, %|%, :=, ... 也许需要根据所需的运算符优先级进行选择,如相同函数中所述,但使用名称 %>% 会导致与使用名称 := 时相比不同的结果

使用的占位符名称是开放的,但._很常见,需要显式放置(不会自动放置作为第一个参数)。

评估环境是开放的。但在这个答案中,看起来应该避免使用用户环境。

它应该能够在用户环境中保留该值,以防它与占位符同名。

1 %>% identity(.)
#[1] 1
.
#Error: object '.' not found

. <- 2
1 %>% identity(.)
#[1] 1
.
#[1] 2
Run Code Online (Sandbox Code Playgroud)

它应该能够更新用户环境中的值,包括占位符的名称。

1 %>% assign("x", .)
x
#[1] 1

"x" %>% assign(., 2)
x
#[1] 2

1 %>% assign(".", .) …
Run Code Online (Sandbox Code Playgroud)

r pipe

10
推荐指数
1
解决办法
330
查看次数

Bizarro 管道 -&gt;.; 是否有不推荐使用的缺点?

从 R-Version 4.1.0 开始,管道|>处于稳定版本。当将 lhs 传递给第一个参数以外的参数时,手册的示例显示:

mtcars |> subset(cyl == 4) |> (function(d) lm(mpg ~ disp, data = d))()
Run Code Online (Sandbox Code Playgroud)

或使用时 \(x)

mtcars |> subset(cyl == 4) |> (\(d) lm(mpg ~ disp, data = d))()
Run Code Online (Sandbox Code Playgroud)

或者使用当前需要激活的PIPEBIND

Sys.setenv(`_R_USE_PIPEBIND_` = TRUE) 
mtcars |> subset(cyl == 4) |> . => lm(mpg ~ disp, data = .)
Run Code Online (Sandbox Code Playgroud)

|>也可以使用Bizarro 管道 代替->.;

mtcars |> subset(cyl == 4) ->.; lm(mpg ~ disp, data = .)
Run Code Online (Sandbox Code Playgroud)

由于 R 中管道符号的一个目的是允许以一种可能使处理步骤序列 更容易遵循 …

r

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

管道纯粹在基础 R(“基础管道”)中?

有没有办法在基本 R 中进行管道传输,而无需定义自己的函数(即“开箱即用”的东西),也无需加载任何外部包?

也就是说,一些(基数 R)替代 magrittr pipe %>%。可能在即将推出的 R (?)

此功能在 R 4.0.3 中是否可用。如果不是,它是在哪个 R 版本中找到的,如果是,这是如何实现的?

r magrittr

5
推荐指数
3
解决办法
1317
查看次数

错误:“mutate()”列出现问题 (...) 大小必须为 15 或 1,而不是 17192

lme4::lmer我目前正在尝试按照本教程绘制函数的结果。我已经尝试了教程中的代码,它按预期工作。\n在教程中,在pred_dist绘图之前将一列添加到数据集中以用于拟合函数。当我用自己的数据尝试此操作时,出现以下错误:

\n
Error: Problem with `mutate()` column `pred_dist`.\n\xe2\x84\xb9 `pred_dist = fitted(model0)`.\n\xe2\x84\xb9 `pred_dist` must be size 15 or 1, not 17192.\n\xe2\x84\xb9 The error occurred in group 1: sgroup = 578, group = 1.\n
Run Code Online (Sandbox Code Playgroud)\n

样本数据

\n

我的代码:

\n
# Loaded libraries\nlibrary(dplyr)\nlibrary(ggplot2)\nlibrary(lme4)\nlibrary(lmerTest)\nlibrary(lattice)\n\n# My lmer model. myData is fairly \nmodel0 <- lmer(outcome ~ (1|group), data=myData, REML = FALSE)\nsummary(model0)\n\nmyData %>% \n    # save predicted values\n    mutate(pred_dist = fitted(model0)) \n
Run Code Online (Sandbox Code Playgroud)\n

我想了解的是:是什么导致了此错误消息,以及如何解决它?

\n
\n
更新:
\n

根据bouncyballungroup()的评论,我在之前添加了\n …

r lme4 dplyr

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

本机管道占位符

我意识到这个问题之前已经被问过,但没有点击。真的没有占位符吗?

例子:

my_mtcars <- mtcars %>% mutate(bla = c(1:nrow(.)))
my_mtcars$bla[10] <- NA
my_mtcars$bla[15] <- NA
Run Code Online (Sandbox Code Playgroud)

作品:

# magritr pipe to return NA rows while debugging a df
my_mtcars %>% filter(!complete.cases(.)) %>% glimpse
Run Code Online (Sandbox Code Playgroud)

不起作用:

# native piple equivilent
my_mtcars |> filter(!complete.cases(.)) |> glimpse()
Run Code Online (Sandbox Code Playgroud)

我尝试使用本机管道执行的操作的“正确”方法是什么?

r

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

使用 R |&gt; 管道链接算术运算符

这基本上与dplyr with %>% pipeline 中的链算术运算符相同的问题,但针对新的(如 R 4.1)管道运算符进行了更新|>

如何将算术运算符与 R 本机管道链接起来|>使用 dplyr/magrittr,您可以对算术运算符使用反引号,但这不适用于内置的 R 管道运算符。这是一个简单的例子:

R.version$version.string
# [1] "R version 4.2.2 (2022-10-31 ucrt)"

x <- 2
# With dplyr/magrittr, you can use backticks for arithmetic operators
x %>% `+`(2)
# [1] 4

# But that doesn't work with the inbuilt R pipe operator
x |> `+`(2)
#  Error: function '+' not supported in RHS call of a pipe
Run Code Online (Sandbox Code Playgroud)

希望答案足够通用,适用于通常不能与本机 R 管道很好地配合的任何运算符或内置函数(我的版本是 R 4.2.2)。

答案/sf/answers/5046054471/有很多关于 …

r arithmetic-expressions pipe

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

在条件 dplyr 链中使用基本 R 管道

我想知道在 dplyr 链存在条件元素的情况下如何使用基管|>代替 tidyverse 的基管。%>%当我尝试使用以下代码时|>,出现错误:

Error: function '{' not supported in RHS call of a pipe
Run Code Online (Sandbox Code Playgroud)

Tidyverse 示例

library(tidyverse)

condition = FALSE

mtcars %>%
  { if(condition == TRUE)
    mutate(., mpg = mpg*1000)
    else . }

Run Code Online (Sandbox Code Playgroud)

基本 R 管道示例(导致错误):

mtcars |>
  { if(condition == TRUE)
    mutate(., mpg = mpg*1000)
    else . }
Run Code Online (Sandbox Code Playgroud)

r

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

相同的函数,但使用名称 %&gt;% 会导致与使用名称 := 时不同的结果

我正在使用@Konrad Rudolph的函数,但将其名称从 更改%>%:=,并获得相同的调用不同的结果。

`%>%` = function (lhs, rhs) {
  subst = call('substitute', substitute(rhs), list(. = lhs))
  eval.parent(eval(subst))
}

`:=` <- `%>%`

1 %>% .+2 %>% .*3
#[1] 7

1 := .+2 := .*3
#[1] 3
Run Code Online (Sandbox Code Playgroud)

或者具有不同的功能。

`%>%` <- function(lhs, rhs) {
  assign(".", lhs, envir=parent.frame())
  eval(substitute(rhs), parent.frame())
}

`:=` <- `%>%`

1 %>% .+2 %>% .*3
#[1] 7

1 := .+2 := .*3
#[1] 9
Run Code Online (Sandbox Code Playgroud)

为什么使用名为 的函数时会得到其他结果:=

r pipe operator-precedence

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

R 中使用的管道运算符

由于我刚刚开始学习R,我想将下面的代码重新编写成管道运算符的方式。但是,设置 rowname 和 colname 阻止了我。如果有人能帮助我,我将不胜感激,非常感谢!

原代码详细如下,

data_3 <- c(692, 5, 0, 629, 44, 9)
table_3 <- matrix(data_3, ncol=3, byrow = TRUE)
colnames(table_3) <- c("Improved", "Hospitalized", "Death")
rownames(table_3) <- c("Treated", "Placebo")
table_3 <- as.table(table_3)

chisq.test(table_3)
fisher.test(table_3)
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试使用管道运算符时,我在设置 colname 和 rowname 时遇到了麻烦。

c(692, 5, 0, 629, 44, 9) %>% 
  matrix(ncol = 3) %>% 
  colnames <- c("Improved", "Hospitalized", "Death")
Run Code Online (Sandbox Code Playgroud)

如果有人可以帮助我使用这个管道操作员,我将不胜感激。

非常感谢您的支持!

此致,

查尔斯

r

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

选择R中每组中特定行之后的所有行

我想选择每个 的第一个V(列中)之后出现的行。actionuser

df<-read.table(text="
user   action
1        D
1        D
1        P
1        E
1        V
1        D
1        D
2        E
2        V
2        V
2        P",header=T,stringsAsFactors = F)

resutl:
user   action
1       V
1       D
1       D
2       V
2       V
2       P
Run Code Online (Sandbox Code Playgroud)

r dplyr

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