我想在数据帧中创建一个带有位置的额外列。我的计划是使用开始和结束列作为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))
。
您可以使用mapply
、pmap
或rowwise
。
tbl %>%
mutate(position = mapply(seq, start, end))
tbl %>%
rowwise() %>%
mutate(position = list(seq(start, end)))