【发布时间】:2021-09-19 08:58:45
【问题描述】:
我有一个包含一列的数据框,其中每一行包含一个列表,该列表本身包含一个列表。
每行看起来像这样:list(statistic = c(x = 10.69), parameter = c(df = 4.63), p.value = c(P = 0.05))
以某种方式解释 df 的结构:
row1<-list(statistic = c(x = 10.69), parameter = c(df = 4.63), p.value = c(P = 0.05))
row2<-list(statistic = c(x = 10.69), parameter = c(df = 4.63), p.value = c(P = 2.5))
...
row300<-row1<-list(statistic = c(x = 10.69), parameter = c(df = 4.63), p.value = c(P = 4.6))
df<-rbind(row1, row2, ... , row300) #this is the dataframe I have
我唯一感兴趣的是 p 值,这就是为什么我想以某种方式提取它的原因,因此理想情况下,我想创建一个与原始数据帧具有相同行数的数据帧,并且每行包含p.value,表示 p.value 列表中的内容,在这种情况下为“P = 0.05”。
所以回到上面的代码示例:我需要的是一个新的数据框,其中包含每行中提取的 p.value 以便调用行的输出为
df2[1] 0.05 df2[2] 2.5 ... df2[300] 4.6
提取一行所需的值可以正常工作,如下所示:df[[1]][[1]][['p.value']]
但是,当我想对数据框的 300 行中的每一行执行此操作时,它不起作用。我正在考虑一个 for 循环,在其中我提取每行的每个 p.value 并将它们子集到一个新的数据框中:
x<-1:300
for(i in x){
one<-data.frame
one<-rbind(df[[1]][[i]][['p.value']])
}
【问题讨论】:
-
你能显示你的预期输出吗?
-
我不完全确定您的意思.. 因为我无法提取该值。但是,如果我们将我在每行列表中的列表中描述的初始 df 称为 df1,那么我的预期输出将是 df2,其中有一列,与 df1 相同的行数,每一行都包含提取的参数,所以列表中的任何内容p.value (如您所见,它又在列表中)。抱歉,如果不清楚。让我知道我可以指定什么
-
你能发布你的输入和预期输出吗?
-
我假设您想将嵌套列表转换为不同的列。您可能正在从
dplyr寻找bind_rows -
请阅读Under what circumstances may I add “urgent” or other similar phrases to my question, in order to obtain faster answers? - 总结是这不是解决志愿者的理想方式,并且可能会适得其反。请不要将此添加到您的问题中。
标签: r list subset data-extraction