在循环中根据行名合并列表数据
merge the list data based on rownames in a loop
我正在尝试将数据合并到一个列表中,但我发现它们的长度并不完全相同。有的长65有的长66.
datalist_BAL
是我的数据列表,datalist_BAL_name
是列表的名称。我尝试用行名创建另一个列表 BAL
并根据行名合并到 BAL_data
中。下面是我的代码。
BAL <-list()
BAL_data<-data.frame()
for(i in 1:length(datalist_BAL)){
dt<- t(datalist_BAL[[i]])
rownames(dt)<-t(datalist_BAL_name[[i]])
BAL[[i]] <- dt
if (i==1) {next()}
BAL_data<-merge(BAL[[i-1]],BAL[[i]],by = "row.names",all= TRUE)
}
我成功生成了BAL_data
,但它只包含两列。
所以我想知道如何 运行 一个循环来合并列表的所有数据。提前致谢!
这就是我要做的。我认为问题在于您只使用 2 个数据框进行合并,这就是为什么您只有两列的原因。您也可以考虑更改列名。
datalist_BAL <- list(data.table(text=c('a', 'b'), merge_col=c('1', '2')),
data.table(text=c('c', 'd'), merge_col=c('1', '2')),
data.table(text=c('e', 'f'), merge_col=c('1', '2')))
BAL <-list()
BAL_data<-data.frame()
for(i in 1:length(datalist_BAL)){
dt<- datalist_BAL[[i]]
if (i==1) {
BAL_data <- dt
next()}
BAL_data<-merge(BAL_data,dt,by = "merge_col",all= TRUE)
}
这意味着您的代码将像这样更改
BAL <-list()
BAL_data<-data.frame()
for(i in 1:length(datalist_BAL)){
dt<- t(datalist_BAL[[i]])
rownames(dt)<-t(datalist_BAL_name[[i]])
BAL[[i]] <- dt
if (i==1) {
BAL_data <- dt
next()}
BAL_data<-merge(BAL_data,BAL[[i]],by = "row.names",all= TRUE)
}
我正在尝试将数据合并到一个列表中,但我发现它们的长度并不完全相同。有的长65有的长66.
datalist_BAL
是我的数据列表,datalist_BAL_name
是列表的名称。我尝试用行名创建另一个列表 BAL
并根据行名合并到 BAL_data
中。下面是我的代码。
BAL <-list()
BAL_data<-data.frame()
for(i in 1:length(datalist_BAL)){
dt<- t(datalist_BAL[[i]])
rownames(dt)<-t(datalist_BAL_name[[i]])
BAL[[i]] <- dt
if (i==1) {next()}
BAL_data<-merge(BAL[[i-1]],BAL[[i]],by = "row.names",all= TRUE)
}
我成功生成了BAL_data
,但它只包含两列。
所以我想知道如何 运行 一个循环来合并列表的所有数据。提前致谢!
这就是我要做的。我认为问题在于您只使用 2 个数据框进行合并,这就是为什么您只有两列的原因。您也可以考虑更改列名。
datalist_BAL <- list(data.table(text=c('a', 'b'), merge_col=c('1', '2')),
data.table(text=c('c', 'd'), merge_col=c('1', '2')),
data.table(text=c('e', 'f'), merge_col=c('1', '2')))
BAL <-list()
BAL_data<-data.frame()
for(i in 1:length(datalist_BAL)){
dt<- datalist_BAL[[i]]
if (i==1) {
BAL_data <- dt
next()}
BAL_data<-merge(BAL_data,dt,by = "merge_col",all= TRUE)
}
这意味着您的代码将像这样更改
BAL <-list()
BAL_data<-data.frame()
for(i in 1:length(datalist_BAL)){
dt<- t(datalist_BAL[[i]])
rownames(dt)<-t(datalist_BAL_name[[i]])
BAL[[i]] <- dt
if (i==1) {
BAL_data <- dt
next()}
BAL_data<-merge(BAL_data,BAL[[i]],by = "row.names",all= TRUE)
}