将格式为 1:5 的范围的文本导入从带有 : 运算符的字符转换为数字 string/value 以便在函数中使用

Converting a text import of a range in format 1:5 from character with : operator to a numeric string/value for use in a function

我正在导入一个键,其中每一行都是我编写的函数的参数设置。目标是通过为所有参数集生成输出来批量测试我的函数。这不是很重要。重要的是我导入了一个列,该列在每一行中都包含一个范围值。例如,“1:5”意味着作为值 1:5 输入到参数中。我尝试使用 as.numeric("1:5") 进行强制转换,但 R 对此并不满意。有没有办法从字符值“1:5”

将其强制转换为字符串 c(1,2,3,4,5)
Reduce(':', strsplit(x,":")[[1]])
[1] 1 2 3 4 5

如果x = "1:5",我们可以用strsplit来分隔两个数。然后我们可以使用 Reduce 在拆分上执行运算符 :

您的文本是有效代码,因此您可以eval(parse

dat$parsed <- lapply(dat$key, function(x) eval(parse(text=x)))
#   key           parsed
# 1 1:5    1, 2, 3, 4, 5
# 2 1:6 1, 2, 3, 4, 5, 6
# 3 1:4       1, 2, 3, 4

数据

dat <- read.table(text="key
1:5
1:6
1:4", strings=F, header=T)