Rでリストの各要素の列を抽出したい

okwaves2024-01-25  9

このリストの各要素の 3 番目の列 (c) を抽出し、結果を保存します。 (この例では、私が持っているリストの長いリストのように見えるようにデータ フレームをリストしました):

set.seed(59)
df<- data.frame(a=c(1,4,5,2),b=c(9,2,7,4),c=c(5,2,9,4))
df1<- data.frame(df,2*df)
df1<- list(df,2*df)

[[1]]
  a b c
1 1 9 5
2 4 2 2
3 5 7 9
4 2 4 4

[[2]]
   a  b  c
1  2 18 10
2  8  4  4
3 10 14 18
4  4  8  8

要素が 1 つだけあるため、非常に単純に見えます

> df1[[1]]["c"]
 c
1 5
2 2
3 9
4 4
> df1["c"] # cries again
[[1]]
NULL

私が見たいのは次のとおりです:

 [[1]]
   c
 1 5
 2 2
 3 9
 4 4
 [[2]]
   c
 1 10
 2 4
 3 18
 4 8
 

よろしくお願いします



------------------------

ラップを使用します:

data <- lapply(df1, function(x) x[, 'c', drop = FALSE])
data
#[[1]]
#  c
#1 5
#2 2
#3 9
#4 4

#[[2]]
#   c
#1 10
#2  4
#3 18
#4  8

1 つの列データフレームをサブセット化すると、そのデータフレームが可能な限り最も低い次元 (この場合はベクトル) に強制されます。データフレームとして保持するには、drop = FALSE が必要です。

総合生活情報サイト - OKWAVES
総合生活情報サイト - OKWAVES
生活総合情報サイトokwaves(オールアバウト)。その道のプロ(専門家)が、日常生活をより豊かに快適にするノウハウから業界の最新動向、読み物コラムまで、多彩なコンテンツを発信。