以编程方式在 R cbind() 中插入列表元素
Programmatically insert list elements in R cbind()
我有一个由命令创建的日期列表 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)))
我不太确定你到底需要什么,但你可以通过定义一个函数来节省一些 space:
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 个单独的数据框中可能更好。
您可以使用 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))))
我有一个由命令创建的日期列表 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)))
我不太确定你到底需要什么,但你可以通过定义一个函数来节省一些 space:
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 个单独的数据框中可能更好。
您可以使用 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))))