我对mget
和get
的工作方式有点困惑
我使用lapply
来读取多个 Dataframe (df1,df2)并进行操作,但是当我使用get
时,对象被读取,但如果我将其替换为mget
,则无法工作,不知道为什么
我注意到的是,如果我使用get
,则在全局环境中搜索dataframe并将其读取为dataframe,但是如果我使用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))
})
字符串
2条答案
按热度按时间mzillmmw1#
get
只用于查找一个变量并返回存储在变量中的值,而mget
查找多个变量并以列表的形式返回它们。你要做的事情可以简化为字符串
enxuqcxy2#
下面是
mget
的解决方案。从帮助页面
?get
:按名称搜索对象(get)或零个或多个对象(mget)。
在“值”部分中:
对于
get
,找到的对象。如果未找到对象,则会产生错误。对于
mget
,指对象的命名列表(通过ifnotfound
找到或指定)。字符串
创建于2023-07-17带有reprex v2.0.2