R - 基于序列在数据帧列表中创建变量

时间:2014-12-07 02:41:52

标签: r list

我创建了一系列按顺序排序的数据框(例如df1df2df3df4,...)。我已将这些数据框一起拉入列表(ldf),现在想创建一个变量(z),其中包含与每个数据帧关联的数字,以便变量{{1} } z中的元素df1将等于ldf,而1z = 2的{​​{1}}等于df2

实际上我有几千个数据框,但作为一个例子,我将以下代码放在一起构建数据框并将它们包装成一个列表:

ldf

从另一个thread借用一些代码,我试图用以下代码创建变量for (i in 1:4) { assign(paste0('df', i), data.frame(x = rep(1:100), y = seq(from = 1, to = 1000, length = 100))) } ldf <- list(df1, df2, df3, df4)

z

毫不奇怪,这只是在每个数据框中的100次观察中重复循环1-4,而不是为ldf <- lapply(ldf, function(x) { x$z = seq(1:4) return(x) }) 分配1,为df1分配2,{ {1}} df23 df3(按照我的意愿)。

如果对列表更熟悉的人可以帮我解决这个问题,我将非常感激。

2 个答案:

答案 0 :(得分:2)

如果您想同时迭代两个列表/向量,可以使用mapply()Map。这里的代码使用后者

Map(function(x,z) cbind(x,z=z), ldf, 1:4)

答案 1 :(得分:0)

这是否解决了请求?

ldf$z <- seq_along(ldf)