【发布时间】:2013-12-31 15:10:40
【问题描述】:
我有一个包含几个数据框的列表,每个数据框有 3 列,我想全部重塑它们。每个数据框都有不同的列名(我试图更改所有 df 的列名但没有成功,但这是另一个 SO 问题:)),所以我必须索引列而不是使用列名。
我可以使用 lapply 得到我想要的:
df = lapply(df, function(x) reshape(x, v.names = 1, idvar = 3, timevar = 2, direction ="wide"))
其中 1,2 和 3 是我要使用的 df 列。但出于好奇,我尝试使用 for 循环来做同样的事情,但我做错了。
for (i in length(df)){
df[[i]] <- reshape(df[[i]], v.names = 1, idvar = 3, timevar = 2, direction = "wide")
}
这没有任何作用。鉴于我不能使用列名,我不确定如何指定列。例如:
for (i in length(df)){
df[[i]] <- reshape(df[[i]], v.names = df[[i]][,1], idvar = df[[i]][,3], timevar = df[[i]][,2], direction = "wide")
}
Error in `[.data.frame`(data, , idvar) : undefined columns selected
那么,如何使用列索引通过 for 循环重塑数据框列表?有什么想法吗?
谢谢。
【问题讨论】: