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
如何将id列添加到data.frames列表中_R_List_Dataframe_Loops_Lapply - Fatal编程技术网

如何将id列添加到data.frames列表中

如何将id列添加到data.frames列表中,r,list,dataframe,loops,lapply,R,List,Dataframe,Loops,Lapply,我正在将data.frames的列表(k)绑定到单个data.frames(current\u output)中 但是我想知道如何在我的结果data.frame中添加一个id列,这样我就可以在基本R中获得我的desred\u输出 k = list(A = data.frame(d = 1, n = 2), B = data.frame(d = 1:2, n = 2:3)) current_output = do.call(rbind, k) # d n #A 1 2 #B.1 1 2

我正在将data.frames的列表(
k
)绑定到单个data.frames(
current\u output
)中

但是我想知道如何在我的结果data.frame中添加一个
id
列,这样我就可以在基本R中获得我的
desred\u输出

k = list(A = data.frame(d = 1, n = 2), B = data.frame(d = 1:2, n = 2:3))

current_output = do.call(rbind, k)
#    d n
#A   1 2
#B.1 1 2
#B.2 2 3

desired_ouput1 = data.frame(id = c(1,2,2), d = c(1,1:2), n = c(2,2:3))
#  id d n
#1  1 1 2
#2  2 1 2
#3  2 2 3

desired_ouput2 = data.frame(id = c(A,B,B), d = c(1,1:2), n = c(2,2:3))
#  id d n
#1  A 1 2
#2  B 1 2
#3  B 2 3

如果您希望使用base R解决方案,下面的代码可能会对您有所帮助

do.call(
  rbind,
  c(Map(cbind, id = names(k), k),
    make.row.names = FALSE
  )
)

  id d n
1  A 1 2
2  B 1 2
3  B 2 3
    id d n
A    A 1 2
B.1  B 1 2
B.2  B 2 3

或者你可以

cbind(
  id = rep(
    names(k),
    sapply(k, nrow)
  ),
  do.call(rbind, k)
)

  id d n
1  A 1 2
2  B 1 2
3  B 2 3
    id d n
A    A 1 2
B.1  B 1 2
B.2  B 2 3

如果您希望使用base R解决方案,下面的代码可能会对您有所帮助

do.call(
  rbind,
  c(Map(cbind, id = names(k), k),
    make.row.names = FALSE
  )
)

  id d n
1  A 1 2
2  B 1 2
3  B 2 3
    id d n
A    A 1 2
B.1  B 1 2
B.2  B 2 3

或者你可以

cbind(
  id = rep(
    names(k),
    sapply(k, nrow)
  ),
  do.call(rbind, k)
)

  id d n
1  A 1 2
2  B 1 2
3  B 2 3
    id d n
A    A 1 2
B.1  B 1 2
B.2  B 2 3

@亨里克,这能提供一个基本的R解决方案吗?非常感谢。有关几个
base
备选方案,请参阅。@Henrik,这是否可能提供一个base R解决方案?非常感谢。有关几种
base
备选方案,请参阅。