0

この質問で、ここで始まった議論を補足したいと思います

特定の範囲を 1 つずつ更新する必要があるデータ フレームを含むリストがあります。「一度に1つ」の要件により、ここでlapplyを使用するのが難しくなっていると思いますが、間違っている場合は修正してください。

明確にするために、次の例を提案しましょう。

set.seed(1)

d1<-data.frame(a=rnorm(5), b=c(rep(2006, times=4),NA), c=seq(from=22, to=30, by=2))
d2<-data.frame(a=1:5, b=c(2007, 2007, NA, NA, 2007), c=11:15)
d3<-data.frame(a=12:16, b=c(NA, NA, NA, 2008, 2008), c=21:25)
my.ls<-list(d1=d1, d2=d2, d3=d3)

my.ls


$d1
           a    b  c
#  1.5117812 2006 22
#  0.3898432 2006 24
# -0.6212406 2006 26
# -2.2146999 2006 28
#  1.1249309   NA 30

$d2
  a    b  c
# 1 2007 11
# 2 2007 12
# 3   NA 13
# 4   NA 14
# 5 2007 15

$d3
   a    b  c
# 12   NA 21
# 13   NA 22
# 14   NA 23
# 15 2008 24
# 16 2008 25

ここで、行 3 と 4 を確認するために、b列のNA を$d2前年の値で変更したいとします2006。リンクされたディスカッションに続いて、コードを使用してそれを行うことができると思いました。

my.ls[["d2"]][,is.na(b)]<-2006

しかし、私は間違っていました。bR は、オブジェクトが見つからないというエラーを報告します。ここでの問題は、論理条件を使用してリスト内のデータ フレーム範囲を参照する方法を理解することだと思います。

いつものように、解決策は頭で考えているよりもはるかに簡単かもしれません...

4

0 に答える 0