2

データ フレーム (この例ではdf$candpct) 内にリストがあり、リストから最初と 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

最初の要素を効果的に抽出する方法を示したこの回答を見てきました。

> 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

second_place理想的には、対応する行を埋めるNA0、2 番目の要素が欠落している場合に使用したいと思います。

この問題に対処する方法にはさまざまなアプローチがあると思いますが、リストを扱った経験があまりないので、始めるのに苦労しています。

よろしくお願いします。

4

1 に答える 1

3

私のコメントをフォローアップするだけです:

l <- list(a = 1,b = 1:2,c = 1:3)
> sapply(l,'[',2)
 a  b  c 
NA  2  2 
于 2012-04-07T02:06:23.180 に答える