有了这个问题,我想补充讨论的开始here
我有一个包含数据框的列表,我需要为其更新特定范围一次。我认为“一次一个”的要求在这里难以使用 - 但如果我错了,请纠正我。
让我提出以下例子来澄清。
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
现在,假设我想更改b
$d2
列中的NAs,其中包含前一年的值,以便在第3行和第4行2006
中查看。在链接的讨论之后,我认为我能够使用代码
my.ls [[ “D2”]] [,is.na(B)]&LT; -2006
但我错了。 R报告错误,指出无法找到对象b
。我认为这里的问题是要了解如何使用逻辑条件引用列表中的数据帧范围。
像往常一样,解决方案可能比我想象的更容易......