最小可重现数据
set.seed(2023)
pid <- 1:30
y1 <- rnorm(30, 10, 10)
y2 <- rnorm(30, 10, 10)
x1 <- rnorm(30, 5, 2)
x2 <- rnorm(30, 5, 2)
x3 <- rnorm(30, 300, 3)
data <- data.frame(pid, y1, y2, x1, x2, x3)
我想做一个函数
sumTogether <- function(data=data,
first_IV,
second_IV,
third_IV=NULL,
first_DV,
second_DV
) {
require(tidyverse)
if (is.null(third_IV)) {
data <- data %>%
mutate(IVsum=first_IV + second_IV,
DVsum=first_DV + second_DV)
return(data)
}
else if(!is.null(third_IV)) {
data <- data %>%
mutate(IVsum=first_IV + second_IV + third_IV,
DVsum=first_DV + second_DV)
return(data)
}
}
我想要的是,如果Thrid_IV为空,我可以得到IVsum作为第一IV +第二IV,如果Third_IV不为空,我可以得到IVsum作为第一IV+第二IV+第三IV。
head <- sumTogether(data=data, first_IV=x1, second_IV=x2, third_IV=x3, first_DV=y1, second_DV=y2)
它不像我想的那样工作,因为x1+ x2 + x3不是Iv和...(错误计算)
1条答案
按热度按时间cyej8jka1#
我们必须将
third_IV
作为NULL
传递,否则总是将所有三个IV
相加: