我创建了一系列按顺序排序的数据框(例如df1
,df2
,df3
,df4
,...)。我已将这些数据框一起拉入列表(ldf
),现在想创建一个变量(z
),其中包含与每个数据帧关联的数字,以便变量{{1} } z
中的元素df1
将等于ldf
,而1
中z = 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}} df2
和3
df3
(按照我的意愿)。
如果对列表更熟悉的人可以帮我解决这个问题,我将非常感激。
答案 0 :(得分:2)
如果您想同时迭代两个列表/向量,可以使用mapply()
或Map
。这里的代码使用后者
Map(function(x,z) cbind(x,z=z), ldf, 1:4)
答案 1 :(得分:0)
这是否解决了请求?
ldf$z <- seq_along(ldf)