我试图用R编写代码,使我能够:
从较大数据框中的变量(列)中删除第一个数据元素(值)。
在完整的数据帧上运行一个函数(删除步骤1中的数据元素)。
对列中的其余数据元素重复此过程。
我尝试了以下代码,并在没有收到错误的情况下运行了它。但是,从结果可以明显看出,数据元素并没有按照需要被连续删除。
对于上下文,我的数据帧(df)为50x18,而我尝试从第2步运行的函数是多重插补函数。这是我的代码:
procedure <- function(x) {
x <- NA
mice(df, m = 5, maxit = 5, method = "norm", pred = pred_matrix, seed = 2019)
}
results <- lapply(df$variable, procedure)
根据需要,此代码生成具有50组输出的列表。但是,似乎在相同的精确数据帧上执行了50次该过程。因此,我的问题是:为什么我的代码为什么不循环遍历数据变量中的每个元素并在运行过程之前将其删除呢?我不尝试缩小数据帧(删除行)。相反,对于变量中的每个值(x),我要使值“ NA”(丢失),然后执行该过程。
提前致谢!
假设的元素df$variable
是唯一的,那么以下内容应该起作用:
procedure <- function(x) {
df1 <- df
df1[df1$variable == x,"variable"] <- NA
mice(df1, m = 5, maxit = 5, method = "norm", pred = pred_matrix, seed = 2019)
}
results <- lapply(df$variable, procedure)
如果它们不是唯一的,则可以按以下方式遍历索引:
procedure <- function(x) {
df1 <- df
df1[x,"variable"] <- NA
mice(df1, m = 5, maxit = 5, method = "norm", pred = pred_matrix, seed = 2019)
}
results <- lapply(1:length(df$variable), procedure)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句