Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.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 dplyr在列索引上变异_R_Dplyr - Fatal编程技术网

R dplyr在列索引上变异

R dplyr在列索引上变异,r,dplyr,R,Dplyr,基于这个问题: 我想对mutate的源和目标使用列索引进行mutate: iris %>% head %>% mutate(.[[1]] = .[[1]] + .[[2]]) 给出: Error: unexpected '=' in "iris %>% head %>% mutate(.[[1]] =". 然而,以下工作: iris %>% head %>% mutate(sum = .[[1]] + .[[2]]) 我们可以在base R iris[[

基于这个问题:

我想对mutate的源和目标使用列索引进行mutate:

iris %>% head %>% mutate(.[[1]] = .[[1]] + .[[2]])
给出:

Error: unexpected '=' in "iris %>% head %>% mutate(.[[1]] =".
然而,以下工作:

iris %>% head %>% mutate(sum = .[[1]] + .[[2]])

我们可以在
base R

iris[[1]] <- iris[[1]] + iris[[2]]

iris[[1]]为什么要以不受支持的方式执行此操作。已经有了使用列名调用列的标准方法。如果有以数字开头的列,请将其更改为标准名称,因为在其他情况下这样做会变得很困难。我正在制作一个通用函数,用于处理具有不同列名但数据格式相同的多个表。我可以暂时将列重命名为make mutate并返回它们的旧名称,但这将是一个更简洁的解决方案。如果这不受支持,那么这就是我一直在寻找的答案。在这种情况下,最好使用
base R
iris[[1]]谢谢,这就解决了问题,我一直很困惑为什么这些问题会被否决。不过,在R中通常还有其他解决问题的方法。这是一个愚蠢的问题吗?我应该删除它吗?是否可以使用它的可能副本来选择,例如,从第二列到最后一列<代码>虹膜%>%头部%>%变异(总和=.[1]+.[-2]])
没有work@PhillipBlack你是说
iris%>%head%>%突变(sum=rowSums([2:(ncol()-1)])
没错!对于旁观者:[(ncol(.)-1)]和[(ncol(.)-1)]将调用列的向量或列本身。@Luis您可以使用
aeps\u 1\u fine%>%mutate(!!names(.)[1]:=as.numeric(!!rlang::sym(names(.)[1])
或跨(即
aeps\u 1\u fine%>%mutate)(跨(1,as.numeric))
我不知道你怎么会对R和R编程如此了解!!多谢!成功了!