У меня есть data.frame Z
, и я хотел бы выбрать только пару переменных, хранящихся в символьном векторе vars
. Это, конечно, легко сделать с помощью:
Z[,vars]
Проблема в том, что мне нужны все эти переменные lags 1 and 4
. Я использую lag(variable,-1)
, чтобы получить их. Я попробовал следующее, что было предложено здесь ранее:
require(plyr)
l <- c(0,1,4)
expand.grid(x=vars,l=l)
# which results in
x l
var1 0
var2 0
var3 0
var1 1
var2 1
var3 1
var1 4
var2 4
var3 4
buildFaDf <- function(x,l) paste("lag(Z$",x,",-",l,")",sep="")
test <- mlply(vars,buildFaDf)
возвращает список примерно так:
....
$`4`
[1] "lag(Z$var1,-1)"
Если я вызову этот элемент списка, я просто верну символы, но, конечно, мне хотелось бы получить сами данные. В конце я хочу получить unlist
и получить data.frame, содержащий все vars
и соответствующие им лаги.
Я также играл с substitute
, eval
и expression
и не мог этого сделать.
Обратите внимание, что я не сфокусирован на решении mlply
, здесь оно было мне предложено в последнее время, и, возможно, в данный момент я немного предвзят.