2012-04-07 10 views
2

データフレーム(この例ではdf$candpct)内にリストがあり、リストから1番目と2番目の要素を抽出し、別々のベクトルに配置したいと考えています。ここでサプリでリストに欠けている要素を無視する

は、データフレームの最初の構造である:

> head(df) 
    juris       candpct 
1 101    0.752491, 0.247509 
2 102 0.4856056, 0.2850754, 0.1845157 
3 103        1 
4 104        1 

私が効果的に最初の要素を抽出する方法を私に示された、this answerを見てきました:

> df$first_place <- sapply(df$candpct,"[[",1) 

> head(df) 
     juris       candpct first_place 
    1 101    0.752491, 0.247509 0.752491 
    2 102 0.4856056, 0.2850754, 0.1845157 0.4856056 
    3 103        1   1 
    4 104        1   1 

しかし、私はしようとした場合別の行を実行して2番目の要素を抽出すると、すべての行が2番目の位置に要素を持つわけではないため、エラーが発生します。

> df$second_place <- sapply(df$candpct,"[[",2) 
Error in FUN(X[[3L]], ...) : subscript out of bounds 

第二要素が欠落している場合、それはNA又は0second_placeに対応する行を充填するために理想的に、私はたいです。

この問題に対処する方法はさまざまですが、私はリストを使って多くの経験を積んでいるわけではありませんので、始めに多くの問題を抱えています。

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

+0

は、代わりに '[['の '['使用してみてください。 – joran

答えて

3

ちょうど私のコメントのフォローアップ:

l <- list(a = 1,b = 1:2,c = 1:3) 
> sapply(l,'[',2) 
a b c 
NA 2 2 
+0

Hm。私はそれを試みたはずだと思います!ありがとう!私がリンクしてきた答えが掲載されてから2年間でこれがどのように働いたのか変更されましたか? – user1202761

+0

@ user1202761いいえ、私はそう思いました。 – joran

関連する問題