在r中创建嵌套数据的问题或更好的解决方案



我想在数据帧中创建一个带有位置的额外列。我的计划是使用开始和结束列作为seq命令的输入,并期望与as.list获得一个嵌套的数据条目,我可以之后只是unnest。但这给了我一个错误。例如:

tibble(
start=c(1,7),
end=c(3,10),
total=15,
value=c(100,200)
)

我期望的结果是这样的:

tibble(
start=c(1,1,1,7,7,7,7),
end=c(3,3,3,10,10,10,10),
total=15,
value=c(100,100,100,200,200,200,200),
position=c(1,2,3,7,8,9,10)
)

我试过像

tibble(
start=c(1,7),
end=c(3,10),
total=15,
value=c(100,200)
) %>% 
mutate(position=as.list(seq(start,end))) %>% 
unnest(position)

我做错了什么?

错误来自seq。您必须逐行应用您的函数,因为该调用在默认情况下解释seq(c(1, 7), c(3, 10))

您可以使用mapplypmaprowwise

tbl %>% 
mutate(position = mapply(seq, start, end))
tbl %>% 
rowwise() %>% 
mutate(position = list(seq(start, end)))

相关内容

最新更新