Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过R中的函数改变数据帧_R_Function_Tidyverse - Fatal编程技术网

通过R中的函数改变数据帧

通过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

很抱歉,基本的问题,但我在这个论坛上找不到一个例子来解决这个问题。我试过这个

我想通过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)


crivo
R
正是您要求它做的事情。在
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()