我对mget
和get
的工作方式有点困惑
我使用lapply
来读取多个数据帧(df1、df2)并执行操作,但是当我使用get
时,对象将被读取,但如果我将其替换为mget
,它将无法工作,不确定原因
我注意到的是,如果我使用get
,则会在全局环境中搜索数据帧并将其作为数据帧读取,但是如果我使用mget
,则对象将作为列表读取,因此进一步的代码无法工作
df1 <- tribble(
~City_Name, ~Temp, ~Pres, ~Wind_Hor, ~Wind_Ver, ~S_Moist, ~Temp1, ~Pres1, ~Wind1, ~S_Moist1,
'Mi', 27, 1019, 287, 278, 78, 1, 2, 2, 1,
'Mi', 28, 1019, 289, 277, 78, 2, 2, 1, 3
)
df2 <- tribble(
~City_Name, ~Temp, ~Pres, ~Wind_Hor, ~Rainf, ~S_Moist, ~Temp1, ~Pres1, ~Wind1, ~S_Moist1,
'Mi', 27, 1019, 287, 278, 78, 1, 2, 2, 1,
'Mi', 28, 1019, 289, 277, 78, 2, 2, 1, 3
)
dfs1 <- c('df1','df2')
var <- c('City_Name', 'Temp', 'Pres' , 'Wind_Hor' , 'Wind_Ver' , 'Rainf' , 'S_Moist')
lapply(dfs1, \(x) {
dfn <- mget(x, envir = .GlobalEnv, inherits = T)
dfn[[var[which(is.na(match(var,names(dfn))))]]] <- NA
dfn <- dfn %>% select(all_of(var))
return(assign(x,dfn,envir = .GlobalEnv))
})