1
これは私のデータフレームの例です。データフレーム内でネストされたリスト変数のサブセット化と置換
theo size dta
1 0.2776062 10 1.631967....
2 0.2776062 10 0.737667....
3 0.2776062 10 0.131252....
4 0.2776062 10 1.937334....
5 0.2776062 10 0.739868....
6 0.4310112 20 4.631176....
7 0.4310112 20 2.610180....
8 0.4310112 20 0.175918....
9 0.4310112 20 3.501670....
10 0.4310112 20 0.588178....
か:
set.seed(777)
df <- data.frame(theo = numeric(),
size = numeric(),
dta = I(list()))
df[ 1: 5,"theo"] <- qlnorm(0.1, meanlog=0, sdlog=1, lower.tail = TRUE, log.p = FALSE)
df[ 6:10,"theo"] <- qlnorm(0.2, meanlog=0, sdlog=1, lower.tail = TRUE, log.p = FALSE)
df[ 1: 5,"size"] <- 10
df[ 6:10,"size"] <- 20
for(i in 1:10){
df$dta[i] <- list(rlnorm(df$size[i], meanlog = 0, sdlog = 1))
}
df
str(df)
これは、のようなDFを与える必要があります:それは、私は私のシナリオごとに保存しておきたいのn値の単一のリストがある「DTA」という名前の列変数を含み、 :
'data.frame': 10 obs. of 4 variables:
$ theo: num 0.278 0.278 0.278 0.278 0.278 ...
$ size: num 10 10 10 10 10 20 20 20 20 20
$ dta :List of 10
..$ : num 1.632 0.671 1.667 0.671 5.148 ...
..$ : num 0.738 1.056 0.152 0.967 10.089 ...
..$ : num 0.131 1.256 0.457 3.574 4.211 ...
..$ : num 1.937 2.359 3.496 0.297 4.587 ...
..$ : num 0.74 0.66 0.481 0.434 1.874 ...
..$ : num 4.631 0.298 10.28 0.933 1.286 ...
..$ : num 2.61 0.472 0.251 1.61 0.303 ...
..$ : num 0.176 0.566 2.156 0.407 3.52 ...
..$ : num 3.502 1.748 1.283 0.648 1.359 ...
..$ : num 0.588 0.392 2.447 1.926 0.86 ...
..- attr(*, "class")= chr "AsIs"
さて、私は、このような方法でそのリストをサブセットしたいこと:
-
ここで、各リストについて、各値は、その値が「テオ」に等しい未満である場合、またはデータフレーム
- に格納されている固定値「テオ」と比較される
- 、その値を再コーディングNA
でありますコードを作業し、私が欲しい、まさに私を与える:私は思っていたが
df$dta2 <- df$dta
for(i in 1:10){
df$dta2[[i]] [ df$dta2[[i]] <= df$theo[i] ] <- NA
}
があることの条件付き交換を進めるための「forループ」がない単一のコード行と同じ結果を得るとする方法ですデータフレームにネストされたリストに含まれる値?
を使用することができますあなたがそんなにakrunありがとうございます。これを行うにはいい素敵な方法:) – Zef
akrun、私はall.equalテストのための "真"を取得していません。私は次のエラーメッセージを受け取ります:[1] "la cible est NULL、l'actuel est list"または "target is NULL、actual is list"。 all.equalを実行するためのアイデアはありますか? – Zef
@ Zef私のコードはあなたが示した例に基づいています。元のデータにNULL要素があるようです。 – akrun