2017-08-07 17 views
0

リスト上でいくつかの操作をしています。このリストは、googleAnalyticsRライブラリのga_account_list()の出力です。R:複雑なリストの要素を関数で操作する

ここにリストのサンプル(最初の2つの要素)を示します。私はそれをga_goalsと呼んだ:

List of 2 
$ :List of 6 
    ..$ kind  : chr "analytics#goals" 
    ..$ username : chr "[email protected]" 
    ..$ 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 "[email protected]" 
    ..$ 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」フィールドと「username」フィールドを削除したいとします。

私は、ga_goalsリストに適用できる関数を書くことで、関数型プログラミング機能を活用しようとしました。しかし、それは動作しませんでした。ここで

は関数であり、それへの呼び出し:

clean_goal_list <- function(goal_list){ 

goal_list[["kind"]] <- NULL 

} 

map(ga_goals, clean_goal_list) 

これを実行するには、次のような出力returnst:

[[1]] 
NULL 

[[2]] 
NULL 

を、元のリストは変わらないままです。

ご協力いただきありがとうございます。

+0

変更された値を最後に返します。 'clean_goal_list < - function(goal_list){; goal_list [["b"]] < - NULL; goal_list; } '。 – lmo

答えて

1

私は最終的に私のアプローチがうまくいかなかった理由を考え出しました。

私のエラーは、map関数の引数としてga_goalsを直接使うことができたと私は思っていました。私が知っていることは、関数内のこのリストの仲間を止め、操作のリストを関数の出力として返すことです。

私の2番目の間違いは、goal_list [["kind"]]を使ってリスト要素(関数内)を処理しようとすることでした。これはうまくいかなかった。私はgoal_list $ kindを試して、これは期待どおりに動作します。

関連する問題