将字符列表转换为 R 中的命名数字

Converting list of Characters to Named num in R

我想创建一个包含 3 列的数据框。

#First column
name_list = c("ABC_D1", "ABC_D2", "ABC_D3", 
              "ABC_E1", "ABC_E2", "ABC_E3",
              "ABC_F1", "ABC_F2", "ABC_F3")

df1 = data.frame(C1 = name_list)

第 1 列中的这些名称是 cor.test 函数的一组命名结果。第二列应该包含我通过写 ABC_D1$estimate, ABC_D2$estimate 得到的相关系数。

我现在的问题是我不想手动将 $estimate 添加到第一列的每个名称。我试过这个:

df1$C2 = paste0(df1$C1, '$estimate')

但这不管用,它只会给我这个回报:

"ABC_D1$estimate", "ABC_D2$estimate", "ABC_D3$estimate", 
"ABC_E1$estimate", "ABC_E2$estimate", "ABC_E3$estimate",
"ABC_F1$estimate", "ABC_F2$estimate", "ABC_F3$estimate")

class(df1$C2)
[1] "character

如何在我的数据框中获取 ABC_D1$estimate 的数值结果?如何将这些字符转换为 Named num?第 3 列应包含 $p.value.

的结果

好的,我想现在我知道你需要什么了。

eval(parse(text = paste0("ABC_D1", '$estimate')))

您连接两个字符串并使用函数 parseeval 得到您的结果。

这是如何为你的整个人做的 data.frame:

name_list = c("ABC_D1", "ABC_D2", "ABC_D3", 
              "ABC_E1", "ABC_E2", "ABC_E3",
              "ABC_F1", "ABC_F2", "ABC_F3")

df1 = data.frame(C1 = name_list)

df1$C2 <- map_dbl(paste0(df1$C1, '$estimate'), function(x) eval(parse(text = x)))

正如@DSGym 所指出的那样,存在几个问题,包括有一个角色名称列表不是很方便,最好有一个对象列表。

无论如何,我想你可以使用以下方法到达你想去的地方:

estimates <- lapply(name_list, function(dat) {
                          dat_l <- get(dat)
                          dat_l[["estimate"]]
                          }
                            )

cbind(name_list, estimates)

这确实不可取但考虑到这些前提...