Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
合并列表的dataframes并获取dataframes的名称作为列_R_List_Rbind - Fatal编程技术网

合并列表的dataframes并获取dataframes的名称作为列

合并列表的dataframes并获取dataframes的名称作为列,r,list,rbind,R,List,Rbind,我将列表中的所有数据帧合并到一个数据帧中 列表中的数据帧称为 TAI NAM HEE 每个数据帧都是这样的 Yr-M Compound1 Compound 2 2015-01 0.002 0.15 2015-02 0.004 0.02 2015-03 0.01 0.09 当我将所有数据帧与meanall合并时,您可以在通过do.call将三个列表合并后,使用列表名添加一个附加列: nameColumn <- data.frame(listName

我将列表中的所有数据帧合并到一个数据帧中

列表中的数据帧称为

TAI
NAM
HEE 
每个数据帧都是这样的

Yr-M   Compound1 Compound 2
2015-01   0.002    0.15
2015-02   0.004    0.02
2015-03   0.01     0.09

当我将所有数据帧与
meanall合并时,您可以在通过
do.call将三个列表合并后,使用列表名添加一个附加列:

nameColumn <- data.frame(listName = c(rep(c('TAI','NAM','HEE'),
                                          c(length(TAI),length(NAM),length(HEE) ))
meanall <- cbind(meanall, nameColumn)

通过
do.call
,在合并三个列表后,您可以使用列表名添加其他列:

nameColumn <- data.frame(listName = c(rep(c('TAI','NAM','HEE'),
                                          c(length(TAI),length(NAM),length(HEE) ))
meanall <- cbind(meanall, nameColumn)

行名称不能重复。因此,最好的方法是将行名转换为列,然后使用gsub删除[0-9],即

df <- do.call(rbind, your_list)
df$list_id <- gsub('\\..*', '', rownames(df))

行名称不能重复。因此,最好的方法是将行名转换为列,然后使用gsub删除[0-9],即

df <- do.call(rbind, your_list)
df$list_id <- gsub('\\..*', '', rownames(df))

有一段时间我试图理解
的意思
do.call
里面做了什么,但我猜你把你的列表命名为
的意思
。。。?你可以看出为什么这是一个坏习惯。至于行名,您不能有重复的行名。因此,最好的方法是将行名转换为列,然后使用
gsub
删除
[0-9]
我使用了不同的名称,但只是在这里更改了它以避免误解。有一段时间,我试图理解
的意思
do.call中的作用,但是我猜你把你的名单命名为
意思
。。。?你可以看出为什么这是一个坏习惯。至于行名,您不能有重复的行名。因此,最好的做法是将行名转换为列,然后使用
gsub
删除
[0-9]
我使用了不同的名称,但只是在这里更改了它以避免误解
df <- do.call(rbind, your_list)
df$list_id <- gsub('\\..*', '', rownames(df))
dplyr::bind_rows(your_list, .id = 'list_id')
data.table::rbindlist(your_list, idcol = 'list_id')