在R中,我有一个列表,由12个子列表组成,每个子列表本身由5个子发布者组成,如下所示
列表和子列表
在本例中,我想为每个子列表提取信息“MSD”。
我可以提取每种使用方法的级别“统计信息”
lapply(letters, '[[', "statistics")
这很有效。它给了我子列表“statistics”中包含的所有值,但是,对于每个列表,我想向下一级,因为我对其他数据(如MSerror、Df等)不感兴趣。。。。。只有MSD
我试过了
lapply(letters, '[[', "statistics", "MSD")
还有许多人没有成功。
如果我只想要第一个子列表,它将与
letters[[1]][["statistics"]][["MSD"]]
但是接下来,我必须做:
letters[[1]][["statistics"]][["MSD"]]
letters[[2]][["statistics"]][["MSD"]]
letters[[3]][["statistics"]][["MSD"]]
这是我想要避免的一个时间问题。
谢谢你的帮助。
一个选项是嵌套lappy:
lapply(lapply(letters, '[[', "statistics"),`[[`,"MSD")
与@akrun的方法相比,这种方法的好处是,即使列表中的某些元素没有$statistics$MSD项,它也会起作用,这在本例中可能并不相关。
我们可以使用lambda/匿名函数
lapply(letters, function(x) x[["statistics"]][["MSD"]])
此函数的好处是,如果有多个嵌套元素,则不必调用n
lappy
,而且应该更快
或者使用map
library(tidyverse)
map(letters, ~ .x[["statistics"]][["MSD"]])
此外,关于声称如果列表中没有某些元素,这将不起作用,
set.seed(24)
lst1 <- replicate(3, list(statistics = list(MSD = rnorm(20))))
names(lst1)[2] <- "Hello"
这是真的,它不会工作。然而,它也不适用于声称有效的解决方案。
嗨,我的数据结构已附加。 我只需要访问下每个元素下的。我可以单独手动执行,这给了我,但像这样的元素有100个。 我遵循这个问题的解决方案:列表子集的子集 使用此
问题内容: 对于任意长度的子列表,将列表切成切片的子列表节列表的最简单,合理有效的方法是什么? 例如,如果我们的源列表是: 我们的子列表长度为3,然后我们寻求: 同样,如果我们的子列表长度为4,则我们寻求: 问题答案: [input[i:i+n] for i in range(0, len(input), n)] # Use xrange in py2k 块的长度在哪里。 由于您没有定义当不能将中
本文向大家介绍R按列值子集行,包括了R按列值子集行的使用技巧和注意事项,需要的朋友参考一下 示例 内置的功能子集可以rows与columns该满足的条件。 为了找到rows有price_Elasticity > 0: df[df$price_Elasticity > 0, ] 基于price_Elasticity > 0和的子集total_Margin > 0: df[df$price_Elast
首先,我知道Firestore是如何工作的,并且花了很多时间评估不同的方法以获得良好的结构。但我仍在考虑以下情况: 有一个已知食谱的数据库。用户可以添加菜谱,但必须确认它们是真正的菜谱,而不仅仅是一些变体。因此,每个用户都可以从用户生成的食谱列表中选择receipes,说明他们知道如何烹饪(或添加新的)。 现在,我希望用户与其他人分享他们的receipes列表,但我不确定如何最好地使用Firest
问题内容: 我想用另一个子列表替换list中的一个子列表。像这样: 可以说我想要一个像这样的子列表: 并替换为 所以最终结果将是 有什么建议? 问题答案: 希望能有所帮助
检查arr2是否是子集。输入:输出:是的子集 如果我们使用线性探测。哈希表将如下所示:其中第一项是索引(哈希代码),如果您看到元素7,第二项是值。哈希代码是。所以从1开始,它必须通过检查每个bucket来遍历整个哈希表。这里的时间复杂度是O(n) 稍后,我们将使用哈希表搜索中的所有元素。 所以总的时间复杂度将是Len(arr2)*O(n)。 那么散列的好处是什么呢?