【发布时间】:2016-08-21 18:05:24
【问题描述】:
希望这个问题也可以帮助其他 R 用户。
有一个包含多个对象(初始数据帧)的列表,所有对象都具有相同的结构。目标是融合每个对象并将第三个变量的名称替换为对应对象的名称,使用lapply。
数据框是:
gdp <- data.frame(date = as.Date(c('2010-03-31','2010-06-30','2010-09-30','2010-12-31')),
id1 = rnorm(4), id2 = rnorm(4), id3 = rnorm(4));
employ <- data.frame(date = as.Date(c('2010-03-31','2010-06-30','2010-09-30','2010-12-31')),
id1 = rnorm(4), id2 = rnorm(4), id3 = rnorm(4));
fdi <- data.frame(date = as.Date(c('2010-03-31','2010-06-30','2010-09-30','2010-12-31')),
id1 = rnorm(4), id2 = rnorm(4), id3 = rnorm(4));
包含数据框的列表是:
data.list <- list(gdp=gdp, employ=employ, fdi=fdi);
尝试将列表中的不同对象融合到面板数据结构中(使用id=c("date") 融合),并将第三个变量的名称(融合后名为value)替换为相应对象的名称(即gdp、employ和fdi),如下:
data.list <- lapply(data.list, function(x) {
x <- melt(x, id = c("date"));
setnames(x, c("date", "id", paste(names(data.list[x])))); x});
但是,这会导致以下错误消息:
"Error in data.list[x] : invalid subscript type 'list'"
感谢您分享您的知识!
【问题讨论】:
-
它不是列表中的“x”对象吗? akrun 有解决方案吗?
-
对不起,我没有检查
{,因为没有缩进,我认为它是创建单独的对象。
标签: r list variables object lapply