如何解决创建一个列表列,其范围由现有列设置
我试图在数据框中创建一个列表列,使用现有列指定范围,例如:
# A tibble: 3 x 3
A B C
<dbl> <dbl> <list>
1 1 6 c(1,2,3,4,5,6)
2 2 5 c(2,5)
3 3 4 c(3,4)
要注意的是,它需要按如下方式创建:
df %>% mutate(C = c(A:B))
我有一个数据集,其中包含作为范围输入的整数,即有人输入了“ 7到26”。我将范围分为两列A和B,或“开始”和“结束”,并希望使用c(A:B)创建一个列表,但使用dplyr时,我不断得到:
Warning messages:
1: In a:b : numerical expression has 3 elements: only the first used
2: In a:b : numerical expression has 3 elements: only the first used
哪个给:
# A tibble: 3 x 3
A B C
<dbl> <dbl> <list>
1 1 6 list(1:6)
2 2 5 list(1:6)
3 3 4 list(1:6)
有人遇到过类似的问题并找到了解决方法吗?
解决方法
您可以在map2()
中使用purrr
library(dplyr)
df %>%
mutate(C = purrr::map2(A,B,seq))
或在rowwise()
之前做mutate()
df %>%
rowwise() %>%
mutate(C = list(A:B)) %>%
ungroup()
两种方法都给出
# # A tibble: 3 x 3
# A B C
# <int> <int> <list>
# 1 1 6 <int [6]>
# 2 2 5 <int [4]>
# 3 3 4 <int [2]>
数据
df <- tibble::tibble(A = 1:3,B = 6:4)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。