このリストの各要素の 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 が必要です。