Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.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
如何在dplyr中使用mutate动态修改变量?_R_Dplyr_Tidyverse_Mutate - Fatal编程技术网

如何在dplyr中使用mutate动态修改变量?

如何在dplyr中使用mutate动态修改变量?,r,dplyr,tidyverse,mutate,R,Dplyr,Tidyverse,Mutate,我希望动态选择变量并在tibble数据帧中修改它们。我复制了一个示例问题。有人能帮忙吗。 谢谢 试试这个。你可以用!!从rlang和dplyr的sym使用运算符进行所需的计算:=。代码如下: library(dplyr) #Data and code df <- tibble( x = c(1, 2, 3), y = c(4, 5, 6), z = c(6, 7, 8)) variables = c("x", "y") for (va

我希望动态选择变量并在tibble数据帧中修改它们。我复制了一个示例问题。有人能帮忙吗。 谢谢

试试这个。你可以用!!从rlang和dplyr的sym使用运算符进行所需的计算:=。代码如下:

library(dplyr)
#Data and code
df <- tibble(
  x = c(1, 2, 3),
  y = c(4, 5, 6),
  z = c(6, 7, 8))

variables = c("x", "y")

for (var in variables)
{
  var <- sym(var)
  df <- df %>% mutate(!!var := !!var + 1)
}
输出:

# A tibble: 3 x 3
      x     y     z
  <dbl> <dbl> <dbl>
1     2     5     6
2     3     6     7
3     4     7     8
试试这个。你可以用!!从rlang和dplyr的sym使用运算符进行所需的计算:=。代码如下:

library(dplyr)
#Data and code
df <- tibble(
  x = c(1, 2, 3),
  y = c(4, 5, 6),
  z = c(6, 7, 8))

variables = c("x", "y")

for (var in variables)
{
  var <- sym(var)
  df <- df %>% mutate(!!var := !!var + 1)
}
输出:

# A tibble: 3 x 3
      x     y     z
  <dbl> <dbl> <dbl>
1     2     5     6
2     3     6     7
3     4     7     8
我们可以使用mutate和cross

-输出

# A tibble: 3 x 3
#      x     y     z
#  <dbl> <dbl> <dbl>
#1     2     5     6
#2     3     6     7
#3     4     7     8
数据 我们可以使用mutate和cross

-输出

# A tibble: 3 x 3
#      x     y     z
#  <dbl> <dbl> <dbl>
#1     2     5     6
#2     3     6     7
#3     4     7     8
数据
您好@akrun,如果我们想将更新添加为新列,而不是覆盖现有列,您需要如何修改mutate语句?仍在试图找出如何使用mutate and oss代替mutate_at来创建新列。啊哈,找到了'df%>%mutateacrossall_of variables,listtest=~。+1'@RussThomas您可以使用.names={col}\u在acrossHi@akrun中测试,如果我们想将更新添加为新列而不是覆盖现有列,您需要如何修改mutate语句?仍在试图找出如何使用mutate and oss代替mutate_at来创建新列。啊哈,找到了'df%>%mutateacrossall_of variables,listtest=~。+1'@RussThomas您可以使用。name={col}\u测试