首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用数据帧列表列表

如何使用数据帧列表列表
EN

Stack Overflow用户
提问于 2018-10-28 10:16:50
回答 1查看 173关注 0票数 0

我不确定这是否可能,甚至不知道如何为下面的R问题找到一个好的解决方案。

数据/背景/结构:我收集了基于项目的合作数据的大型数据集,这些数据将特定项目映射到参与公司(这可以理解为社交网络分析的两部分边缘列表)。由于分析原因,建议将整个数据集划分为不同位置和时间段的不同子集。因此,我创建了以下数据结构

代码语言:javascript
复制
sna.location.list 
[[1]]           (location1)
     [[1]]      (is a dataframe containing the bip. edge-list for time-period1)
     [[2]]      (is a dataframe containing the bip. edge-list for time-period2)
     ...
     [[20]]     (is a dataframe containing the bip. edge-list for time-period20)
[[2]]           (location2)
     ...         (same as 1)
 ...
[[32]]          (location32)
     ...

每个dataframe包含一个项目id和相应的公司id。

我现在的目标是将二分边列表转换为单模式网络,然后进行一些与sna相关的进一步计算(度、集中度、状态、社区检测等)。并拯救他们。

我知道如何用一个(!)来计算这些步骤但是它让我很难在所描述的列表结构中一次为所有网络自动执行此过程,并将各种输出(节点级和网络级变量)保存在类似的结构中。

我已经尝试了几种for循环的方法和应用方法,但它仍然让我彻夜难眠,如何做到这一点,现在我感到非常无助。如有任何帮助或建议,将不胜感激。如果您需要更多信息或示例来给我一个简短的演示或代码示例如何处理这种嵌套结构,并以一种有效的自动方式对所有上述子集进行与sna相关的计算/修改,请随时与我联系。

EN

回答 1

Stack Overflow用户

发布于 2018-10-28 11:32:40

假设您有一个要应用于每个数据框的函数foo。这些数据帧在列表中,所以lapply(that_list, foo)是我们想要的。但是你已经有了一堆列表,所以我们实际上想要在外部列表中lapply第一个lapply,因此是lapply(that_list, lapply, foo)。( foo将通过...传递给内部lapply。如果您希望更明确,您可以使用匿名函数:lapply(that_list, function(x) lapply(x, foo))

您还没有给出可重现的示例,因此我将演示如何将nrow函数应用于一组内置数据帧

代码语言:javascript
复制
d = list(
  list(mtcars, iris),
  list(airquality, faithful)
)

result = lapply(d, lapply, nrow)
result
# [[1]]
# [[1]][[1]]
# [1] 32
# 
# [[1]][[2]]
# [1] 150
# 
# 
# [[2]]
# [[2]][[1]]
# [1] 153
# 
# [[2]][[2]]
# [1] 272

如您所见,输出是一个具有相同结构的list。如果您需要名称,可以使用simplify = FALSE切换到sapply

这包括将函数应用于嵌套列表以及将返回保存在类似的数据结构中。如果你在计算效率、并行化等方面需要帮助,我建议你单独问一个专注于此的问题,并提供一个可重现的例子。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53027858

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档