如何将 space 分隔的字符串强制转换为一列数字向量?
How to coerce space-delimited strings to a column of numeric vectors?
这看起来很简单,但是 none 我尝试过的方法都奏效了。
我有一个 tibble b2d
具有以下结构:
A tibble: 5 × 2
bin day
<chr> <chr>
1 Bin_1 2 5 6 7 8 9 10 11 12 13 14 15 19 21 26 27 28 29 30
2 Bin_2 1 2 4 6 13 14 15 16 17 18 20 21 22 23 24 25 26 27 28 29 30 31
3 Bin_3 2 3 4 5 7 8 13 14 18 26
4 Bin_4 19
5 Bin_5 1 8 20
day
是一列由整数和空格组成的字符串。我想将每个字符串转换为一个数字向量,这样 day
可以用 %in%
运算符搜索(例如 1 %in% b2d$day[[1]]
returns FALSE
; 25 %in% b2d$day[[2]]
returns TRUE
).
我想要的输出:
A tibble: 5 × 2
bin day
<chr> <list>
1 Bin_1 <num [19]>
2 Bin_2 <num [22]>
3 Bin_3 <num [10]>
4 Bin_4 <num [1]>
5 Bin_5 <num [3]>
我试过的方法,没有运气:
b2d %>% mutate(day = as.numeric(unlist(strsplit(day, " "))))
b2d %>% mutate(day = as.numeric(strsplit(day, split = " ", fixed = TRUE)[[1]]))
当它被 unlist
ed 时,它将取消列出整个列表。我们可能需要用 map
遍历列表并转换为 numeric
。 map
returns一个list
library(dplyr)
library(purrr)
b2d %>%
mutate(day = map(strsplit(day, " "), as.numeric))
这看起来很简单,但是 none 我尝试过的方法都奏效了。
我有一个 tibble b2d
具有以下结构:
A tibble: 5 × 2
bin day
<chr> <chr>
1 Bin_1 2 5 6 7 8 9 10 11 12 13 14 15 19 21 26 27 28 29 30
2 Bin_2 1 2 4 6 13 14 15 16 17 18 20 21 22 23 24 25 26 27 28 29 30 31
3 Bin_3 2 3 4 5 7 8 13 14 18 26
4 Bin_4 19
5 Bin_5 1 8 20
day
是一列由整数和空格组成的字符串。我想将每个字符串转换为一个数字向量,这样 day
可以用 %in%
运算符搜索(例如 1 %in% b2d$day[[1]]
returns FALSE
; 25 %in% b2d$day[[2]]
returns TRUE
).
我想要的输出:
A tibble: 5 × 2
bin day
<chr> <list>
1 Bin_1 <num [19]>
2 Bin_2 <num [22]>
3 Bin_3 <num [10]>
4 Bin_4 <num [1]>
5 Bin_5 <num [3]>
我试过的方法,没有运气:
b2d %>% mutate(day = as.numeric(unlist(strsplit(day, " "))))
b2d %>% mutate(day = as.numeric(strsplit(day, split = " ", fixed = TRUE)[[1]]))
当它被 unlist
ed 时,它将取消列出整个列表。我们可能需要用 map
遍历列表并转换为 numeric
。 map
returns一个list
library(dplyr)
library(purrr)
b2d %>%
mutate(day = map(strsplit(day, " "), as.numeric))