通过R中的函数改变数据帧
很抱歉,基本的问题,但我在这个论坛上找不到一个例子来解决这个问题。我试过这个 我想通过R和tidyverse中的函数在data.frame中更改/创建一个新变量: 例如:通过R中的函数改变数据帧,r,function,tidyverse,R,Function,Tidyverse,很抱歉,基本的问题,但我在这个论坛上找不到一个例子来解决这个问题。我试过这个 我想通过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 <- 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)
crivoR
正是您要求它做的事情。在crivo
函数定义中,您编写了一个函数,将您创建的名为x
的新数据帧分配给R
环境。这正是R
所做的,正是您要求它做的。在crivo
函数定义中,您编写了一个函数,将您创建的名为x
的新数据帧分配给R
环境。这就是我不确定我是否理解这个问题。您提供的代码对我来说很好,不过我觉得奇怪的是,您只是将x
分配给环境,而不是从crivo()
函数返回。您能给出数据示例吗?当然。您可以使用以下代码模拟data.frame:library(tidyverse)memo\u我编辑了我的原始帖子以澄清我的问题。谢谢。您必须使用quosure格式,因为在tidyverse函数中,参数是使用Promise惰性地计算的。我不确定我是否理解这个问题。您提供的代码对我来说很好,不过我觉得奇怪的是,您只是将x
分配给环境,而不是从crivo()
函数返回。您能给出数据示例吗?当然。您可以使用以下代码模拟data.frame:library(tidyverse)memo\u我编辑了我的原始帖子以澄清我的问题。谢谢。您将不得不使用quosure格式,因为在tidyverse中,函数参数是使用Promise惰性地进行计算的。非常感谢,@Steven,我想知道是否可以使用类似crivo(我想变异的数据集)的东西来代替memo_re%crivo()的使用?当然可以。使用memo\u re%>%crivo()
与编写crivo(memo\u re)
相同。无论哪种方式,如果您想重用来自crivo()
的任何内容,您都需要将输出分配给某个变量。谢谢,因为英语不是我的第一语言,我想我没有做到精确。是否可以crivo(memo_re)获取“memo_re”数据集,创建新变量并更新此数据集?我想在几个数据集中使用相同的crivo函数。示例crivo(memo_re)将在“memo_re”数据集中执行此功能,但crivo(memo_re)将在“备忘录2)。再次感谢,@StevenSo,memo\r您的回答完全可以接受!多谢!我只是好奇的问一下,看看这个函数是否可以在R中实现!再次感谢你,@Steven!!非常感谢,@Steven,我想知道是否有可能不使用memo_re%crivo()而使用类似于crivo(我想变异的数据集)的东西?当然有。使用memo\u re%>%crivo()
与编写crivo(memo\u re)
相同。无论哪种方式,如果您想重用来自crivo()
的任何内容,您都需要将输出分配给某个变量。谢谢,因为英语不是我的第一语言,我想我没有做到精确。是否可以crivo(memo_re)获取“memo_re”数据集,创建新变量并更新此数据集?我想在几个数据集中使用相同的crivo函数。示例crivo(memo_re)将在“memo_re”数据集中完成此功能,但crivo(memo_2)将在“memo_2”数据集中完成此功能。再次感谢@StevenSo,memo_re您的回答完全可以接受!非常感谢!我只是出于好奇问一下,看看这个功能是否可以在R中完成!再次感谢@Steven!!
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)
> 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 <- function(x) {
x %>%
mutate(resp_1 = if_else(MEMO_RE01 == 0,"VN","FP"),
resp_2 = if_else(MEMO_RE02 == 1,"VP","FN"))
}
new <- memo_re %>% crivo()
memo_re <- memo_re %>% crivo()