我的数据库中有两个名称向量(例如,一个表示组件,另一个表示值),我正在尝试开发一个函数,该函数将以可泛化的方式创建基于这两个向量的新列,即沿着以下路线创建的内容:
#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()试过一些东西,但失败了。
以下是所需的输出:
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也没有成功。
此外,指示符名称的结构方式与所使用的值的名称不同。
发布于 2022-02-28 17:10:56
如果我对你的理解正确,你可能想
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)输出:
a b Sum_of_components
1 2 4 6
2 5 9 14
3 6 6 12https://stackoverflow.com/questions/71298325
复制相似问题