gpt4 book ai didi

r - 获取数字范围内的数字列表

转载 作者:行者123 更新时间:2023-12-01 10:28:34 25 4
gpt4 key购买 nike

我有一个数据框,其中一列包含一个(或多个)数字范围。我想将其转换为基于给定范围的数字列表。

示例输入:

"35-40"

"35-43, 45-47"

这应该产生:

[1]  35 36 37 38 39 40

[1]  35 36 37 38 39 40 41 42 43 45 46 47

最佳答案

我们可以进行拆分并使用 Map 获取数字

do.call(Map, c(`:`, lapply(strsplit(df1$v1, '-'), as.numeric)))
#[[1]]
# [1] 35 36 37 38 39 40 41 42 43 44 45

#[[2]]
#[1] 43 44 45 46 47

如果我们需要在字符串中查找序列

lapply(strsplit(df1$v1, "-"), function(x) Reduce(`:`, as.numeric(x)))
#[1]]
#[1] 35 36 37 38 39 40 41 42 43

#[[2]]
#[1] 45 46 47

更新

如果我们在一个字符串中有多个元素

df1 <- structure(list(v1 = c("35-43", "45-47", "30-42, 25-27")), 
.Names = "v1", row.names = c(NA,
-3L), class = "data.frame")

lapply(strsplit(df1$v1, ", "), function(x) do.call(c,
lapply(strsplit(x, "-"), function(y) Reduce(`:`, as.numeric(y)))))

数据

df1 <- structure(list(v1 = c("35-43", "45-47")), .Names = "v1", row.names = c(NA, 
-2L), class = "data.frame")

关于r - 获取数字范围内的数字列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45435153/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com