相关疑难解决方法(0)

在R编程语言中使用〜(代字号)

我在一个关于回归建模的教程中看到了以下命令:

myFormula <- Species ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width
Run Code Online (Sandbox Code Playgroud)

这个命令究竟做了什么,~(tilde)在命令中的作用是什么?

r r-faq

174
推荐指数
3
解决办法
11万
查看次数

使用%>%管道和点(.)表示法

map嵌套的data_frame上使用时,我不明白为什么后两个版本会出错,我应该如何使用dot(.)?

library(tidyverse)
# dummy data
df <- tibble(id = rep(1:10, each = 10), 
                 val = runif(100))
df <- nest(df, -id)

# works as expected
map(df$data, min)
df %>% .$data %>% map(., min)

# gives an error
df %>% map(.$data, min)
# Error: Don't know how to index with object of type list at level 1

df %>% map(data, min)
Run Code Online (Sandbox Code Playgroud)

r magrittr

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

dplyr句号字符是什么"." 参考?

.以下dplyr代码中的句点引用了什么?:

(df <- as.data.frame(matrix(rep(1:5, 5), ncol=5)))
#    V1 V2 V3 V4 V5
#  1  1  1  1  1  1
#  2  2  2  2  2  2
#  3  3  3  3  3  3
#  4  4  4  4  4  4
#  5  5  5  5  5  5

dplyr::mutate_each(df, funs(. == 5))
#       V1    V2    V3    V4    V5
#  1 FALSE FALSE FALSE FALSE FALSE
#  2 FALSE FALSE FALSE FALSE FALSE
#  3 FALSE FALSE FALSE FALSE FALSE
# …
Run Code Online (Sandbox Code Playgroud)

syntax arguments r dplyr

19
推荐指数
2
解决办法
6862
查看次数

如何通过列索引dplyr重命名列?

以下代码重命名数据集中的第一列:

require(dplyr)    
mtcars %>%
        setNames(c("RenamedColumn", names(.)[2:length(names(.))]))
Run Code Online (Sandbox Code Playgroud)

期望的结果:

                    RenamedColumn cyl  disp  hp drat    wt  qsec vs am gear carb
Mazda RX4                    21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4
Mazda RX4 Wag                21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4
Datsun 710                   22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1
Run Code Online (Sandbox Code Playgroud)

是否可以使用和列索引得到相同的结果rename

这个:

mtcars %>%
    rename(1 = "ChangedNameAgain")
Run Code Online (Sandbox Code Playgroud)

将失败:

Error in source("~/.active-rstudio-document", echo = TRUE) : 
  ~/.active-rstudio-document:7:14: unexpected '=' …
Run Code Online (Sandbox Code Playgroud)

r rename dataframe dplyr nse

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

purrr :: map中first tilde的含义是什么?

我正在看这个使用的例子map.这里是:

mtcars %>%
  split(.$cyl) %>% # from base R
  map(~ lm(mpg ~ wt, data = .))
Run Code Online (Sandbox Code Playgroud)

第一个波浪号的含义是什么map(~ lm...?也就是说,R如何解释第一个波浪号?(据我所知,第二个代字号表示功能......).另一种询问方式是,为什么以下不起作用?

mtcars %>%
  split(.$cyl) %>% # from base R
  map(lm(mpg ~ wt, data = .))
Run Code Online (Sandbox Code Playgroud)

r tilde purrr

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

在 mutate() 函数中使用 lag() 时出现问题 (tidyverse)

我正在尝试向数据框中添加另一列,其中新列是新列中先前值和当前行值的函数。我尝试删除不相关的代码并保留简单的数字,以便我可以理解这里的答案。给定以下数据框:

\n
  x\n1 1\n2 2\n3 3\n4 4\n5 5\n
Run Code Online (Sandbox Code Playgroud)\n

下一列 (y) 会将 5 加到 x 上,并加上上一行的 y 值。第一行中没有 y 的先前值,因此我将其定义为 0。因此 y 的第一行值将是 x+5+0 或 1+5+0 或 6。第二行将是 x+5+ y(从第一行开始)或 2+5+6 或 13。数据框应如下所示:

\n
  x  y\n1 1  6\n2 2 13\n3 3 21\n4 4 30\n5 5 40\n
Run Code Online (Sandbox Code Playgroud)\n

我尝试使用 case_when() 和 lag() 函数,如下所示:

\n
test_df <- data.frame(x = 1:5)\ntest_df %>% mutate(y = case_when(x==1 ~ 6,\n+                                    x>1 ~ x+5+lag(y)))\n
Run Code Online (Sandbox Code Playgroud)\n
\n

错误:mutate()列有问题y。\n\xe2\x84\xb9 y = case_when(x == 1 ~ …

r dplyr

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

在mutate中使用replace_na和cross

我正在尝试替换列子集中的 NA 并且我想使用 tidyverse/dplyr 语法。dplyr v1.0.2

在下面,我只想在 ab,ac 列中用 999 替换 NA,而不是在 ads 中

tbf <- tibble( ab = c(1,3,NA), ac = c(23,NA,33), d = c(22,22,NA), ads = c('ds', NA, "dwe"))
tbf %>% mutate(across(starts_with('a') & where(is.numeric)), ~replace_na(999))
Run Code Online (Sandbox Code Playgroud)

似乎不起作用。

我也试过~replace_na(.x,999)了。那也没有用。

任何帮助表示赞赏。

r dplyr

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

R 中的波浪号 (~.)

谁能解释一下 R 中的波浪号 (~.)?我已经看到一些关于它的帖子。我知道波浪号用于公式,指定自变量和因变量。而且,我知道点用于表示所有其他变量。更具体地说,有人可以解释这个例子中的波浪号吗?

x <- sample(10)
x %>%
  detect(~. > 5)
Run Code Online (Sandbox Code Playgroud)

谢谢

r dplyr

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

dplyr管道数据-`.`和`.x`之间的差异

df1 <- data.frame(
  " " = c(" ", "Part Number 1", "Part Number 2", "Part Number 3"), 
  Julie = c("Measurement 1", 33, 34, 33),
  Julie = c("Measurement 2", 32, 31, 31),
  Joe = c("Measurement 1", 33, 33, 30),
  Joe = c("Measurement 2", 31, 32, 31))

df1 %>%
  mutate_all(as.character) %>% 
  set_names(c("Part", paste(names(.)[2:ncol(.)], .[1, 2:ncol(.)], sep = "-"))) %>%
  `[`(2:nrow(.), ) %>%
  gather("key", "value", contains("Measurement")) %>%
  separate("key", c("person", "measurement"), sep = "-") %>%
  mutate_at("person", ~ stringr::str_replace(.x, "\\..*",""))   # line 14
  # mutate_at("person", …
Run Code Online (Sandbox Code Playgroud)

r dplyr

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

标签 统计

r ×9

dplyr ×6

arguments ×1

dataframe ×1

magrittr ×1

nse ×1

purrr ×1

r-faq ×1

rename ×1

syntax ×1

tilde ×1