Определить список dats с двумя кадрами данных, df1 и df2
dats <- list( df1 = data.frame(a=sample(1:3), b = sample(11:13)),
df2 = data.frame(a=sample(1:3), b = sample(11:13)))
> dats
$df1
a b
1 2 12
2 3 11
3 1 13
$df2
a b
1 3 13
2 2 11
3 1 12
Я хотел бы сбросить переменную a в каждом кадре данных. Затем я хотел бы добавить переменную с идентификатором каждого кадра данных из внешнего кадра данных, например:
ids <- data.frame(id=c("id1","id2"),df=c("df1","df2"))
> ids
id df
1 id1 df1
2 id2 df2
Чтобы сбросить ненужные переменные, я попытался без удачи:
> dats <- lapply(dats, function(x) assign(x, x[,c("b")]))
> Error in assign(x, x[, c("b")]) : invalid first argument
Не уверен, как добавить идентификатор тоже.
Я тоже пытался, возможно, более уместно:
> temp <- lapply(dats, function(x) subset(x[1], select=x[[1]]$b))
Error in x[[1]]$b : $ operator is invalid for atomic vectors
Что меня смущает, так это то, что str(out[1])
возвращает список, str(out[[1]])
возвращает фрейм данных. Я думаю, что это как-то связано с этим.