相关疑难解决方法(0)

如何在R中正确使用列表?

简要背景:广泛使用的许多(大多数?)当代编程语言至少有一些共同的ADT [抽象数据类型],特别是

  • string(由字符组成的序列)

  • list(有序的值集合),和

  • 基于地图的类型(将键映射到值的无序数组)

在R编程语言中,前两个分别实现为charactervector.

当我开始学习R时,几乎从一开始就有两件事是显而易见的:list是R中最重要的数据类型(因为它是R的父类data.frame),其次,我无法理解它们是如何工作的,至少不能很好地在我的代码中正确使用它们.

首先,在我看来,R的list数据类型是地图ADT的简单实现(dictionary在Python中,NSMutableDictionary在Objective C中,hash在Perl和Ruby中,object literal在Javascript中,等等).

例如,您可以像创建Python字典一样创建它们,方法是将键值对传递给构造函数(在Python中dict不是这样list):

x = list("ev1"=10, "ev2"=15, "rv"="Group 1")
Run Code Online (Sandbox Code Playgroud)

并且您可以像访问Python字典那样访问R List的项目,例如x['ev1'].同样,您可以通过以下方式仅检索"键"或仅检索"值":

names(x)    # fetch just the 'keys' of an R list
# [1] "ev1" "ev2" "rv"

unlist(x)   # fetch just the 'values' of an R list
#   ev1       ev2        rv 
# …
Run Code Online (Sandbox Code Playgroud)

language-features r list abstract-data-type data-structures

308
推荐指数
9
解决办法
20万
查看次数

使用dplyr从列表中提取对象

这与问题12有关

我有一个对象列表(在我的例子中,它们也是列表AFAII),由运行返回:

gof_stats <- models %>% map(gof_stats)
Run Code Online (Sandbox Code Playgroud)

哪里models是由创建的模型的列表fitdistrplus,并gof_stats是计算拟合统计的善良每个模型的功能.

现在,如果我想从该列表中提取特定的统计数据,我可以执行以下操作:

gof_stats[[1]]$cvm
Run Code Online (Sandbox Code Playgroud)

得到Cramer von Mises的统计数据.我可以在整个列表中实现相同的功能(根据链接的问题),如下所示:

cvms <- sapply(gof_stats, "[[", "cvm")
Run Code Online (Sandbox Code Playgroud)

有没有办法使用dplyr/ purrrsyntax 进行相同的操作?

奖励:您如何处理models列表中某些元素的情况NULL

r dplyr tidyr purrr

0
推荐指数
1
解决办法
2864
查看次数