R 使用源数据帧中每行的可变副本数创建数据帧

R 使用源数据帧中每行的可变副本数创建数据帧,r,apply,R,Apply,假设我有一个数据帧 source <- data.frame(ID=c(1,2), COUNT=c(3,4)) 我想将其转换为一个数据帧,该数据帧具有每个ID的计数记录,并具有一个新的唯一ITEMID,如下所示 ITEMID SOURCEID 1 1 1 2 2 1 3 3 1 4 4 2 5 5 2 6 6 2 7 7

假设我有一个数据帧

source <- data.frame(ID=c(1,2), COUNT=c(3,4))
我想将其转换为一个数据帧,该数据帧具有每个ID的计数记录,并具有一个新的唯一ITEMID,如下所示

  ITEMID SOURCEID
1      1        1
2      2        1
3      3        1
4      4        2
5      5        2
6      6        2
7      7        2
我可以用for循环来实现这一点,但我希望了解如何使用apply类型函数来实现这一点

do.call(rbind, lapply(split(source, source$ID), with, df, {
    itemid <- seq(count)
    sourceid <- id
    data.frame(itemid, sourceid)
})
do.call(rbind,lappy(split(source,source$ID)),with,df{
itemid

do.call(rbind, lapply(split(source, source$ID), with, df, {
    itemid <- seq(count)
    sourceid <- id
    data.frame(itemid, sourceid)
})
do.call(rbind,lappy(split(source,source$ID)),with,df{

itemid无需
应用
功能:

orig <- data.frame(ID=1:2,COUNT=3:4)
new <- data.frame(ITEMID=seq(sum(orig$COUNT)), SOURCEID=rep(orig$ID,times=orig$COUNT))
new
  ITEMID SOURCEID
1      1        1
2      2        1
3      3        1
4      4        2
5      5        2
6      6        2
7      7        2

orig无需
apply
功能:

orig <- data.frame(ID=1:2,COUNT=3:4)
new <- data.frame(ITEMID=seq(sum(orig$COUNT)), SOURCEID=rep(orig$ID,times=orig$COUNT))
new
  ITEMID SOURCEID
1      1        1
2      2        1
3      3        1
4      4        2
5      5        2
6      6        2
7      7        2
orig