【发布时间】:2019-02-26 18:22:29
【问题描述】:
我有一个数据框列表x,其中V1 表示国家,V2 表示年份。
数据框的名称是 y1、y2、y3 等。我想重命名它们,以便它们显示国家和年份(ALBANIA1993、JAPAN2002 等)。以下代码在数据帧上单独工作:
y1 <- as.data.frame(cbind(c("ALBANIA", "ALBANIA", "ALBANIA"), c(1999, 1999, 1999)))
y2 <- as.data.frame(cbind(c("JAPAN", "JAPAN", "JAPAN"), c(2002, 2002, 2002)))
x <- list(y1, y2)
assign(as.character(with(y1, paste0(y1$V1[1], y1$V2[1]))), y1)
assign(as.character(with(y2, paste0(y2$V1[1], y2$V2[1]))), y2)
我正在尝试使用 lapply 一次将其应用于列表 x 中的所有数据帧。
代码如下:
x <- list(y1, y2)
x <- lapply(x, function(y) assign(as.character(with(y, paste0(y$V1[1], y$V2[1]))), y))
如您所见,它与之前的代码相同,但在 lapply 内部。出于某种原因,x 中的数据框没有被重命名,也没有显示错误。
非常感谢您的帮助!如果您需要更多信息,我会进行编辑。
【问题讨论】:
-
请让这个问题可重现。这包括样本数据(例如,
dput(head(x)))和预期输出。参考:stackoverflow.com/questions/5963269、stackoverflow.com/help/mcve 和 stackoverflow.com/tags/r/info。