我在一个关于回归建模的教程中看到了以下命令:
myFormula <- Species ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width
Run Code Online (Sandbox Code Playgroud)
这个命令究竟做了什么,~(tilde)在命令中的作用是什么?
在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) .以下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) 以下代码重命名数据集中的第一列:
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) 我正在看这个使用的例子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) 我正在尝试向数据框中添加另一列,其中新列是新列中先前值和当前行值的函数。我尝试删除不相关的代码并保留简单的数字,以便我可以理解这里的答案。给定以下数据框:
\n x\n1 1\n2 2\n3 3\n4 4\n5 5\nRun 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\nRun Code Online (Sandbox Code Playgroud)\n我尝试使用 case_when() 和 lag() 函数,如下所示:
\ntest_df <- data.frame(x = 1:5)\ntest_df %>% mutate(y = case_when(x==1 ~ 6,\n+ x>1 ~ x+5+lag(y)))\nRun Code Online (Sandbox Code Playgroud)\n\n错误:
mutate()列有问题y。\n\xe2\x84\xb9y = case_when(x == 1 ~ …
我正在尝试替换列子集中的 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 中的波浪号 (~.)?我已经看到一些关于它的帖子。我知道波浪号用于公式,指定自变量和因变量。而且,我知道点用于表示所有其他变量。更具体地说,有人可以解释这个例子中的波浪号吗?
x <- sample(10)
x %>%
detect(~. > 5)
Run Code Online (Sandbox Code Playgroud)
谢谢
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)