我有一个由命令创建的日期列表2006,2007,2008,2009,2010,2011
dates <-sort(seq(2006,2011,1))
我在几个地方使用相同的日期列表,有没有办法访问它们,可能还有
sprinf %s
而不是输入它们?以下是我使用此列表的两个示例。
BS_INC <-cbind(mean(BS_2006$INCSAL), mean(BS_2007$INCSAL), mean(BS_2008$INCSAL),
mean(BS_2009$INCSAL), mean(BS_2010$INCSAL), mean(BS_2011$INCSAL))
bsRusInc <- as.vector(cbind(mean(Russ_BS_2006$INCSAL), mean(Russ_BS_2007$INCSAL), mean(Russ_BS_2008$INCSAL),
mean(Russ_BS_2009$INCSAL), mean(Russ_BS_2010$INCSAL), mean(Russ_BS_2011$INCSAL)))
答案 0 :(得分:1)
我不太确定你需要什么,但你可以通过定义一个函数来节省一些空间:
BS_INC <-cbind(mean(BS_2006$INCSAL), mean(BS_2007$INCSAL), mean(BS_2008$INCSAL),
mean(BS_2009$INCSAL), mean(BS_2010$INCSAL), mean(BS_2011$INCSAL))
# instead of this, you can...
getit <- function(x) mean(x$INCSAL)
sapply(list(BS_2006, BS_2007, BS_2008, BS_2009, BS_2010, BS_2011), getit)
# and further:
sapply(lapply(paste0("BS_", 2006:2011), get), getit)
虽然将数据存储在列表中而不是n + 1个单独的数据框中可能更好。
答案 1 :(得分:1)
您可以使用paste0,eval,parse和sapply:
dates <-sort(seq(2006,2011,1))
var_list <- paste0("BS_",dates,"$INCSAL")
BS_INC <- sapply(var_list, function(x) mean(eval(parse(text = x))))