R:用函数操作复杂列表的元素

时间:2017-08-07 20:12:36

标签: r

我被困在列表上做了一些操作。此列表是googleAnalyticsR库中ga_account_list()的输出。

这是列表的示例(前两个元素)。我称之为ga_goals:

List of 2
 $ :List of 6
  ..$ kind        : chr "analytics#goals"
  ..$ username    : chr "1234@abcd.de"
  ..$ totalResults: int 9
  ..$ startIndex  : int 1
  ..$ itemsPerPage: int 1000
  ..$ items       :'data.frame':    9 obs. of  15 variables:
  .. ..$ id                   : chr [1:9] "1" "2" "3" "4" ...
  .. ..$ kind                 : chr [1:9] "analytics#goal" "analytics#goal" "analytics#goal" "analytics#goal" ...
  .. ..$ selfLink             : chr [1:9] "https://www.googleapis.com/analytics/v3/management/accounts/46324974/w

......

$ :List of 6
  ..$ kind        : chr "analytics#goals"
  ..$ username    : chr "1234@abcd.de"
  ..$ totalResults: int 8
  ..$ startIndex  : int 1
  ..$ itemsPerPage: int 1000
  ..$ items       :'data.frame':    8 obs. of  15 variables:
  .. ..$ id                   : chr [1:8] "2" "3" "4" "5" ...
  .. ..$ kind                 : chr [1:8] "analytics#goal" "analytics#goal" "analytics#goal" "analytics#goal" ...
  .. ..$ selfLink             : chr [1:8] "https://www.googleapis.com/analytics/v3/management/accounts/46324974/w

我想要做的是编写一个删除此列表中某些元素的函数。例如,我想删除" kind"和"用户名"字段。

我试图通过编写一个可以应用于ga_goals列表的函数来利用r函数编程功能。但它没有用。

这是函数和对它的调用:

clean_goal_list <- function(goal_list){

 goal_list[["kind"]] <- NULL

}

map(ga_goals, clean_goal_list)

运行此命令将返回以下输出:

[[1]]
NULL

[[2]]
NULL

原始列表保持不变。

我感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

我终于弄清楚了为什么我的做法不起作用。

我的错误是我认为我可以直接使用它作为map函数的参数来操纵ga_goals。我所知道的是在函数内部停止此列表的副本,并将操作列表作为函数的输出返回。

我的第二个错误是尝试使用goal_list [[&#34; kind&#34;]]来添加列表元素(在函数内)。这没用。我尝试了goal_list $ kind,这可以按预期工作。