首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在R中以一种可推广的方式对多个函数进行突变

在R中以一种可推广的方式对多个函数进行突变
EN

Stack Overflow用户
提问于 2022-02-28 16:46:14
回答 1查看 38关注 0票数 0

我的数据库中有两个名称向量(例如,一个表示组件,另一个表示值),我正在尝试开发一个函数,该函数将以可泛化的方式创建基于这两个向量的新列,即沿着以下路线创建的内容:

代码语言:javascript
复制
#vector components and values contain column names from the dataset

creaYK<-function(data,Input="A",Components=c("A", "B", "C"),Values=c("D", "E", "F")){
    
 for(i in 1:length(Values)){
      data<-data%>%mutate(new_i = sum(Values[i],Components[i]))
              
    }
}

我的问题是,我需要我的论点" vec1“和"vec2”在内容和长度上都可以修改,而计算则需要两两执行(vec1的每个元素都被相加到相应的vec2中)。我用across()试过一些东西,但失败了。

以下是所需的输出:

代码语言:javascript
复制
vec1<-c("A","B","C")
vec2<-c("D","E","F")

data<-tibble(A=1,B=2,C=3,D=4,E=5,F=6)

# what I want is a function returning :

# function(data,vec1,vec2)

tibble(A=1,B=2,C=3,D=4,E=5,F=6,ad=5,be=7,cf=9)

但是上面的代码只创建了一个新列,而我尝试的mutate也没有成功。

此外,指示符名称的结构方式与所使用的值的名称不同。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-28 17:10:56

如果我对你的理解正确,你可能想

代码语言:javascript
复制
library(dplyr)

a <- c(2,5,6)
b <- c(4,9,6)
df <- as.data.frame(cbind(a,b))

tribble <- function(data,vec1,vec2){
  sum_v1v2 <- vec1+vec2
  a <- data %>% mutate(Sum_of_components = sum_v1v2)
}
b <- tribble(df,a,b)

输出:

代码语言:javascript
复制
  a b Sum_of_components
1 2 4                 6
2 5 9                14
3 6 6                12
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71298325

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档