向 R 函数传递参数的问题

问题描述 投票:0回答:0

我有这段代码,我想构建到一个函数中,我将数据框名称、ResponseId 变量名称和一系列变量传递给该函数。它在 ResponseId 变量名称和变量范围上令人窒息。我认为这是因为我将它们错误地传递给了函数。

工作块:


set.seed(1024)

premice_1 <- subset(emu_raw, select=c(ResponseId, PMS_1:PMS_45))
premice_2 <- mice(premice_1, maxit=0, pri=F)
pred <- premice_2$pred
pred[,c("ResponseId")] <- 0
meth <- premice_2$meth
meth[c("ResponseId")] <- ""

postmice_a <- mice(premice_1, m=1, maxit=10, printFlag=TRUE, pred=pred, 
                   meth=meth, seed=4201)
postmice_b <- mice::complete(postmice_a, "long", include=FALSE)
postmice_b$.imp <- NULL
postmice_b$.id <- NULL

emu_raw <- merge(emu_raw, postmice_b)

失败的功能,当我用这个调用它时:

missing_values(emu_raw, ResponseId, PMS_1:PMS_45)
——当然说 PMS_1 不存在,因为传递一系列列似乎有问题

missing_values <- function(df, ResponseId, measure_range) {

set.seed(1024)

premice_1 <- subset(df, select=c(ResponseId, measure_range))
premice_2 <- mice(premice_1, maxit=0, pri=F)
pred <- premice_2$pred
pred[,c("ResponseId")] <- 0
meth <- premice_2$meth
meth[c("ResponseId")] <- ""

postmice_a <- mice(premice_1, m=1, maxit=10, printFlag=TRUE, pred=pred, 
                   meth=meth, seed=4201)
postmice_b <- mice::complete(postmice_a, "long", include=FALSE)
postmice_b$.imp <- NULL
postmice_b$.id <-NULL

return(postmice_b)
}

我试过用括号而不是整洁的 subset() 函数来处理子集,但结果相同。

missing_values <- function(df, ResponseId, measure_range) {

set.seed(1024)

#premice_1 <- subset(df, select=c(ResponseId, measure))
premice_1 <- df[,c(ResponseId, measure_range)]
premice_2 <- mice(premice_1, maxit=0, pri=F)
pred <- premice_2$pred
pred[,c(ResponseId)] <- 0
meth <- premice_2$meth
meth[c(ResponseId)] <- ""

postmice_a <- mice(premice_1, m=1, maxit=10, printFlag=TRUE, pred=pred, 
                   meth=meth, seed=4201)
postmice_b <- mice::complete(postmice_a, "long", include=FALSE)
postmice_b$.imp <- NULL
postmice_b$.id <- NULL

return(postmice_b)
}```

`missing_values(emu_raw, "ResponseId", PMS_1:PMS_45)`

Error in `[.tbl_df`(df, , c(ResponseId, measure_range)) :
object 'PMS_1' not found

3. `[.tbl_df`(df, , c(ResponseId, measure_range))
2. df[, c(ResponseId, measure_range)]
1. missing_values(emu_raw, "ResponseId", PMS_1:PMS_45)
r dataframe function tidyverse series
© www.soinside.com 2019 - 2024. All rights reserved.