Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 将长度不等的多级嵌套列表转换为数据帧_R_List - Fatal编程技术网

R 将长度不等的多级嵌套列表转换为数据帧

R 将长度不等的多级嵌套列表转换为数据帧,r,list,R,List,我有这样一个列表(biclqiues()的输出): A这是一个基本解决方案lappy循环三个biclique元素,然后使用[提取列表的左、右部分。stack将lappy()结果简化为一个漂亮的数据框: left_df <- stack(lapply(A, `[[`, 'left')) left_df # values ind #1 EVELYN biclique1 #2 LAURA biclique1 #3 BRENDA biclique1 #4 EV

我有这样一个列表(biclqiues()的输出):


A这是一个基本解决方案
lappy
循环三个
biclique
元素,然后使用
[
提取列表的左、右部分。
stack
lappy()
结果简化为一个漂亮的数据框:

left_df <- stack(lapply(A, `[[`, 'left'))
left_df

#    values       ind
#1   EVELYN biclique1
#2    LAURA biclique1
#3   BRENDA biclique1
#4   EVELYN biclique2
#5    LAURA biclique2
#6  THERESA biclique2
#7   EVELYN biclique3
#8    LAURA biclique3
#9  THERESA biclique3
#10  BRENDA biclique3
#11 FRANCES biclique3

left_df[left_df$values == 'EVELYN', ]

#  values       ind
#1 EVELYN biclique1
#4 EVELYN biclique2
#7 EVELYN biclique3

# and your direct question - this is base but there are simpler answers in dplyr and data.table:
unique(left_df[left_df$ind %in% left_df[left_df$values == 'EVELYN', 'ind'], 'values'])

#"EVELYN"  "LAURA"   "BRENDA"  "THERESA" "FRANCES"

left\u通过发布
dput(list\u name)
使此问题可重复。同时发布相同的预期输出。@Wendy您希望数据框具有什么结构?您可以发布一个示例吗
left_df <- stack(lapply(A, `[[`, 'left'))
left_df

#    values       ind
#1   EVELYN biclique1
#2    LAURA biclique1
#3   BRENDA biclique1
#4   EVELYN biclique2
#5    LAURA biclique2
#6  THERESA biclique2
#7   EVELYN biclique3
#8    LAURA biclique3
#9  THERESA biclique3
#10  BRENDA biclique3
#11 FRANCES biclique3

left_df[left_df$values == 'EVELYN', ]

#  values       ind
#1 EVELYN biclique1
#4 EVELYN biclique2
#7 EVELYN biclique3

# and your direct question - this is base but there are simpler answers in dplyr and data.table:
unique(left_df[left_df$ind %in% left_df[left_df$values == 'EVELYN', 'ind'], 'values'])

#"EVELYN"  "LAURA"   "BRENDA"  "THERESA" "FRANCES"
right_df <- stack(lapply(A, `[[`, 'right'))
right_df

#   values       ind
#1       1 biclique1
#2       3 biclique1
#3       5 biclique1
#4       6 biclique1
#5       8 biclique1
#6       2 biclique2
#7       3 biclique2
#8       5 biclique2
#9       6 biclique2
#10      8 biclique2
#11      3 biclique3
#12      5 biclique3
#13      6 biclique3
#14      8 biclique3