对不起基本问题,但我在这个论坛中找不到解决这个问题的例子。我已经尝试了this one和one。
我想通过R和tidyverse中的函数更改/ 在我的data.frame中创建一个新变量:
示例:
crivo <- function(x) {
x <<- x %>%
mutate(resp_1 = if_else(MEMO_RE01 == 0,"VN","FP")) %>%
mutate(resp_2 = if_else(MEMO_RE02 == 1,"VP","FN"))
}
crivo(memo_re)
我的data.frame名称是&#34; memo_re&#34; ,但我也会将此功能用于其他数据集,只需更改 x 论点。 R正在创建一个名为x 的新data.frame,而不是在&#34; memor_re&#34;中创建一个新变量。 (原始数据集)。换句话说,我想分配一个函数来做到这一点:
memo_re <- memo_re %>% mutate(resp_1 = if_else(MEMO_RE01 == 0,"VN","FP"))
但我需要更改许多数据集,因此,我希望能够指定我将要更改的数据集。
可重现的代码
library(tidyverse)
memo_re <- data.frame(MEMO_RE01=rep(c(0,1),100), MEMO_RE02=c(0,1))
crivo <- function(x) {
x <<- x %>%
mutate(resp_1 = if_else(MEMO_RE01 == 0,"VN","FP")) %>%
mutate(resp_2 = if_else(MEMO_RE02 == 1,"VP","FN"))
}
crivo(memo_re)
答案 0 :(得分:2)
Height: <input type="number" id="inputHeight" min="1" value="1">
Width: <input type="number" id="inputWidth" min="1" value="1">
<button id="makeGrid">MAKE</button>
<br>
Color: <input type="color" id="colorPicker">
<table id="pixelCanvas"></table>
正在按照您的要求行事。在R
函数定义中,您已将函数编写为将您创建的名为crivo
的新数据框分配到x
环境。这就是R
运算符的作用。运行代码后,使用<<-
查看您环境中的内容,然后查看ls()
。你会看到一切都在那里,正如你所要求的那样,包括正确变异的x
数据帧。
x
现在,如果您希望让> memo_re <- data.frame(MEMO_RE01=rep(c(0,1),100), MEMO_RE02=c(0,1))
>
> crivo <- function(x) {
+ x <<- x %>%
+ mutate(resp_1 = if_else(MEMO_RE01 == 0,"VN","FP")) %>%
+ mutate(resp_2 = if_else(MEMO_RE02 == 1,"VP","FN"))
+ }
> crivo(memo_re)
> ls()
[1] "crivo" "memo_re" "x"
> head(x)
MEMO_RE01 MEMO_RE02 resp_1 resp_2
1 0 0 VN FN
2 1 1 FP VP
3 0 0 VN FN
4 1 1 FP VP
5 0 0 VN FN
6 1 1 FP VP
返回一些您可以指定任何名称的内容,那么您应该使用
crivo()
请注意,我没有在任何地方使用crivo <- function(x) {
x %>%
mutate(resp_1 = if_else(MEMO_RE01 == 0,"VN","FP"),
resp_2 = if_else(MEMO_RE02 == 1,"VP","FN"))
}
运算符。因此,<<-
fx将返回变异的crivo
数据框,以便您可以执行
x
这样,您可以将任何想要的内容传递给new <- memo_re %>% crivo()
并将其分配给任何新变量。或者,如果您只想在crivo
上调用该函数,也可以这样做:
memo_re
请注意,编写函数的“经典”方法是使用memo_re <- memo_re %>% crivo()
来指定fx返回的内容。如果您不使用return()
(我上面没有),return()
将返回最后一行中的内容。在这里,它只是变异数据帧。