在上述 data.frame 个对象列表的列中添加 data.frame 个对象的名称
Add data.frame objects' names from a list in columns in said data.frame objects list
我想知道如何从所述 data.frame 对象列表的列列表中添加 data.frame 对象的名称。
我创建了一个 lm()
对象列表,其中只有 DV(称为 DV_col
)不同(mpg
、drat
、disp
) . lm() 的一般格式为:lm( DV_col ~ cyl, data = mtcars)
.
# sets up data
## list of DVs to use
mtcars_DVs <- data.frame(c("mpg", "drat", "disp"))
names(mtcars_DVs)[names(mtcars_DVs) == "c..mpg....drat....disp.."] <- "Variable_name"
mtcars_DVs$Variable_name <- as.character(mtcars_DVs$Variable_name)
## creates lm object list
# ---- NOTE: creates object list
lm_list <-
lapply(mtcars_DVs$Variable_name,
function(DV_list) wrapr::let(
c(DV_col = DV_list,
dataset_obj = "mtcars",
IV_col_key = "cyl"),
(lm(
DV_col ~
IV_col_key,
data = dataset_obj
)
)
)
)
# ---- NOTE: changes list object name
lm_list <-
setNames(lm_list, paste("lm_list",
mtcars_DVs$Variable_name,
sep = "__")
)
然后我在列表中使用 confint()
创建了一个 confint
对象的列表,并将其转换为数据帧列表,每个数据帧都有基于 DV 的特定名称。
## creates coef object
lm_confint_list <-
lapply(
lm_list,
function(model_list) {
confint(model_list)
}
)
# ---- NOTE: changes list object name
lm_confint_list <-
setNames(lm_confint_list, paste("lm_confint_list",
mtcars_DVs$Variable_name,
sep = "__")
)
# ---- NOTE: creates unique objects for each part list object
list2env(lm_confint_list, .GlobalEnv)
# ---- NOTE: gathers objects with prefix
apropos("lm_confint_list")
## turns lm_confint_list into data frame
lm_confint_df_list <-
lapply(
lm_confint_list,
function(model_list) {
data.frame(model_list, header = TRUE)
}
)
# ---- NOTE: changes list object name
lm_confint_df_list <-
setNames(lm_confint_df_list, paste("lm_confint_df_list",
mtcars_DVs$Variable_name,
sep = "__")
)
# ---- NOTE: creates unique objects for each part list object
list2env(lm_confint_df_list, .GlobalEnv)
# ---- NOTE: gathers objects with prefix
apropos("lm_confint_df_list")
我现在想要 (1) 向数据框中的每个列表添加一个变量,该列表只是重复了数据框列表的名称,称为 object_name
。然后我想 (2) 从此变量中删除一些文本,以创建一个仅包含特定于该分析的 DV 的变量,对于列表 Variable_name
.
中的每个对象
我想使用迭代代码执行 (1) 和 (2) 而无需手动输入,如果我更改对象的性质 mtcars_DVs$Variable_name
(即添加或删除可能的因变量)用于创建模型列表)。
这可能吗?我知道如何通过大量的手动输入来长期执行此操作,但不知道如何使用最少的手动输入进行简短和迭代的操作。
提前致谢。
这是完成 (1) 和 (2) 的漫长道路:
# long way of adding column with object name, will do one confint(), process can be repeated for other variables
## adds as column with name of object to object via manual text input
# ---- NOTE: REQUIRES MANUAL INPUT
lm_confint_df_list__disp$object_name <- "lm_confint_df_list__disp"
## creates column with DV from object_name variable
lm_confint_df_list__disp$Variable_name <-
gsub(".*__","",lm_confint_df_list__disp$object_name)
这是 lm confint 结果之一的完整输出:
> lm_confint_df_list__disp
X2.5.. X97.5.. header object_name Variable_name
(Intercept) -228.45716 -84.76080 TRUE lm_confint_df_list__disp disp
cyl 51.42909 73.76876 TRUE lm_confint_df_list__disp disp
这是我使用的所有代码。
# sets up data
## list of DVs to use
mtcars_DVs <- data.frame(c("mpg", "drat", "disp"))
names(mtcars_DVs)[names(mtcars_DVs) == "c..mpg....drat....disp.."] <- "Variable_name"
mtcars_DVs$Variable_name <- as.character(mtcars_DVs$Variable_name)
## creates lm object list
# ---- NOTE: creates object list
lm_list <-
lapply(mtcars_DVs$Variable_name,
function(DV_list) wrapr::let(
c(DV_col = DV_list,
dataset_obj = "mtcars",
IV_col_key = "cyl"),
(lm(
DV_col ~
IV_col_key,
data = dataset_obj
)
)
)
)
# ---- NOTE: changes list object name
lm_list <-
setNames(lm_list, paste("lm_list",
mtcars_DVs$Variable_name,
sep = "__")
)
## creates coef object
lm_confint_list <-
lapply(
lm_list,
function(model_list) {
confint(model_list)
}
)
# ---- NOTE: changes list object name
lm_confint_list <-
setNames(lm_confint_list, paste("lm_confint_list",
mtcars_DVs$Variable_name,
sep = "__")
)
# ---- NOTE: creates unique objects for each part list object
list2env(lm_confint_list, .GlobalEnv)
# ---- NOTE: gathers objects with prefix
apropos("lm_confint_list")
## turns lm_confint_list into data frame
lm_confint_df_list <-
lapply(
lm_confint_list,
function(model_list) {
data.frame(model_list, header = TRUE)
}
)
# ---- NOTE: changes list object name
lm_confint_df_list <-
setNames(lm_confint_df_list, paste("lm_confint_df_list",
mtcars_DVs$Variable_name,
sep = "__")
)
# ---- NOTE: creates unique objects for each part list object
list2env(lm_confint_df_list, .GlobalEnv)
# ---- NOTE: gathers objects with prefix
apropos("lm_confint_df_list")
# long way of adding column with object name, will do one confint(), process can be repeated for other variables
## adds as column with name of object to object via manual text input
# ---- NOTE: REQUIRES MANUAL INPUT
lm_confint_df_list__disp$object_name <- "lm_confint_df_list__disp"
## creates column with DV from object_name variable
lm_confint_df_list__disp$Variable_name <-
gsub(".*__","",lm_confint_df_list__disp$object_name)
您可以在 Map
的帮助下完成此操作:
lm_confint_df_list <- Map(function(x, y)
data.frame(x, object_name = y, Variable_name = gsub(".*__","",y),
check.names = FALSE), lm_confint_list, names(lm_confint_list))
lm_confint_df_list
#$lm_confint_list__mpg
# 2.5 % 97.5 % object_name Variable_name
#(Intercept) 33.649223 42.119930 lm_confint_list__mpg mpg
#cyl -3.534237 -2.217343 lm_confint_list__mpg mpg
#$lm_confint_list__drat
# 2.5 % 97.5 % object_name Variable_name
#(Intercept) 4.3803292 5.4059919 lm_confint_list__drat drat
#cyl -0.2892782 -0.1298242 lm_confint_list__drat drat
#$lm_confint_list__disp
# 2.5 % 97.5 % object_name Variable_name
#(Intercept) -228.45716 -84.76080 lm_confint_list__disp disp
#cyl 51.42909 73.76876 lm_confint_list__disp disp
将单个对象放入全局变量中。
list2env(lm_confint_df_list, .GlobalEnv)
我想知道如何从所述 data.frame 对象列表的列列表中添加 data.frame 对象的名称。
我创建了一个 lm()
对象列表,其中只有 DV(称为 DV_col
)不同(mpg
、drat
、disp
) . lm() 的一般格式为:lm( DV_col ~ cyl, data = mtcars)
.
# sets up data
## list of DVs to use
mtcars_DVs <- data.frame(c("mpg", "drat", "disp"))
names(mtcars_DVs)[names(mtcars_DVs) == "c..mpg....drat....disp.."] <- "Variable_name"
mtcars_DVs$Variable_name <- as.character(mtcars_DVs$Variable_name)
## creates lm object list
# ---- NOTE: creates object list
lm_list <-
lapply(mtcars_DVs$Variable_name,
function(DV_list) wrapr::let(
c(DV_col = DV_list,
dataset_obj = "mtcars",
IV_col_key = "cyl"),
(lm(
DV_col ~
IV_col_key,
data = dataset_obj
)
)
)
)
# ---- NOTE: changes list object name
lm_list <-
setNames(lm_list, paste("lm_list",
mtcars_DVs$Variable_name,
sep = "__")
)
然后我在列表中使用 confint()
创建了一个 confint
对象的列表,并将其转换为数据帧列表,每个数据帧都有基于 DV 的特定名称。
## creates coef object
lm_confint_list <-
lapply(
lm_list,
function(model_list) {
confint(model_list)
}
)
# ---- NOTE: changes list object name
lm_confint_list <-
setNames(lm_confint_list, paste("lm_confint_list",
mtcars_DVs$Variable_name,
sep = "__")
)
# ---- NOTE: creates unique objects for each part list object
list2env(lm_confint_list, .GlobalEnv)
# ---- NOTE: gathers objects with prefix
apropos("lm_confint_list")
## turns lm_confint_list into data frame
lm_confint_df_list <-
lapply(
lm_confint_list,
function(model_list) {
data.frame(model_list, header = TRUE)
}
)
# ---- NOTE: changes list object name
lm_confint_df_list <-
setNames(lm_confint_df_list, paste("lm_confint_df_list",
mtcars_DVs$Variable_name,
sep = "__")
)
# ---- NOTE: creates unique objects for each part list object
list2env(lm_confint_df_list, .GlobalEnv)
# ---- NOTE: gathers objects with prefix
apropos("lm_confint_df_list")
我现在想要 (1) 向数据框中的每个列表添加一个变量,该列表只是重复了数据框列表的名称,称为 object_name
。然后我想 (2) 从此变量中删除一些文本,以创建一个仅包含特定于该分析的 DV 的变量,对于列表 Variable_name
.
我想使用迭代代码执行 (1) 和 (2) 而无需手动输入,如果我更改对象的性质 mtcars_DVs$Variable_name
(即添加或删除可能的因变量)用于创建模型列表)。
这可能吗?我知道如何通过大量的手动输入来长期执行此操作,但不知道如何使用最少的手动输入进行简短和迭代的操作。
提前致谢。
这是完成 (1) 和 (2) 的漫长道路:
# long way of adding column with object name, will do one confint(), process can be repeated for other variables
## adds as column with name of object to object via manual text input
# ---- NOTE: REQUIRES MANUAL INPUT
lm_confint_df_list__disp$object_name <- "lm_confint_df_list__disp"
## creates column with DV from object_name variable
lm_confint_df_list__disp$Variable_name <-
gsub(".*__","",lm_confint_df_list__disp$object_name)
这是 lm confint 结果之一的完整输出:
> lm_confint_df_list__disp
X2.5.. X97.5.. header object_name Variable_name
(Intercept) -228.45716 -84.76080 TRUE lm_confint_df_list__disp disp
cyl 51.42909 73.76876 TRUE lm_confint_df_list__disp disp
这是我使用的所有代码。
# sets up data
## list of DVs to use
mtcars_DVs <- data.frame(c("mpg", "drat", "disp"))
names(mtcars_DVs)[names(mtcars_DVs) == "c..mpg....drat....disp.."] <- "Variable_name"
mtcars_DVs$Variable_name <- as.character(mtcars_DVs$Variable_name)
## creates lm object list
# ---- NOTE: creates object list
lm_list <-
lapply(mtcars_DVs$Variable_name,
function(DV_list) wrapr::let(
c(DV_col = DV_list,
dataset_obj = "mtcars",
IV_col_key = "cyl"),
(lm(
DV_col ~
IV_col_key,
data = dataset_obj
)
)
)
)
# ---- NOTE: changes list object name
lm_list <-
setNames(lm_list, paste("lm_list",
mtcars_DVs$Variable_name,
sep = "__")
)
## creates coef object
lm_confint_list <-
lapply(
lm_list,
function(model_list) {
confint(model_list)
}
)
# ---- NOTE: changes list object name
lm_confint_list <-
setNames(lm_confint_list, paste("lm_confint_list",
mtcars_DVs$Variable_name,
sep = "__")
)
# ---- NOTE: creates unique objects for each part list object
list2env(lm_confint_list, .GlobalEnv)
# ---- NOTE: gathers objects with prefix
apropos("lm_confint_list")
## turns lm_confint_list into data frame
lm_confint_df_list <-
lapply(
lm_confint_list,
function(model_list) {
data.frame(model_list, header = TRUE)
}
)
# ---- NOTE: changes list object name
lm_confint_df_list <-
setNames(lm_confint_df_list, paste("lm_confint_df_list",
mtcars_DVs$Variable_name,
sep = "__")
)
# ---- NOTE: creates unique objects for each part list object
list2env(lm_confint_df_list, .GlobalEnv)
# ---- NOTE: gathers objects with prefix
apropos("lm_confint_df_list")
# long way of adding column with object name, will do one confint(), process can be repeated for other variables
## adds as column with name of object to object via manual text input
# ---- NOTE: REQUIRES MANUAL INPUT
lm_confint_df_list__disp$object_name <- "lm_confint_df_list__disp"
## creates column with DV from object_name variable
lm_confint_df_list__disp$Variable_name <-
gsub(".*__","",lm_confint_df_list__disp$object_name)
您可以在 Map
的帮助下完成此操作:
lm_confint_df_list <- Map(function(x, y)
data.frame(x, object_name = y, Variable_name = gsub(".*__","",y),
check.names = FALSE), lm_confint_list, names(lm_confint_list))
lm_confint_df_list
#$lm_confint_list__mpg
# 2.5 % 97.5 % object_name Variable_name
#(Intercept) 33.649223 42.119930 lm_confint_list__mpg mpg
#cyl -3.534237 -2.217343 lm_confint_list__mpg mpg
#$lm_confint_list__drat
# 2.5 % 97.5 % object_name Variable_name
#(Intercept) 4.3803292 5.4059919 lm_confint_list__drat drat
#cyl -0.2892782 -0.1298242 lm_confint_list__drat drat
#$lm_confint_list__disp
# 2.5 % 97.5 % object_name Variable_name
#(Intercept) -228.45716 -84.76080 lm_confint_list__disp disp
#cyl 51.42909 73.76876 lm_confint_list__disp disp
将单个对象放入全局变量中。
list2env(lm_confint_df_list, .GlobalEnv)