将字符输入转换为整数向量 [r]
Convert character input to vector of integers [r]
如何将 "c(1:10)"
之类的字符串转换为实际的整数向量?我的问题是我需要使用包 xlsx 中的 read.xlsx
读取一堆文件,但我需要为每个文件读取不同的行。我有一个单独的文件,我可以将其作为 data.frame(称之为 "MyFile")读入工作区,该文件在一列中列出了文件名,在另一列中列出了要读取的行,但我不知道如何将字符串转换成我需要的数字。我会使用正则表达式来提取它,但这听起来比我想要的要多,因为它是从 "c(1:10)"
到 "c(2, 4, 6:8, 21)"
的所有内容的大杂烩。
我试过:
Files <- list()
for (i in 1:nrow(MyFiles)){
Files[[i]] <- read.xlsx(MyFiles$File[i],
sheetName = MyFiles$Tab[i],
rowIndex = MyFiles$Row[i])
}
但 R 不知道如何处理行规范,因为它当前正在将其作为字符串读取。
很遗憾没有比 eval(parse(text=
更好的方法(据我所知),但这就是我在这些情况下使用的方法。
input <- "c(1:10)"
output <- eval(parse(text=input))
output
# [1] 1 2 3 4 5 6 7 8 9 10
如何将 "c(1:10)"
之类的字符串转换为实际的整数向量?我的问题是我需要使用包 xlsx 中的 read.xlsx
读取一堆文件,但我需要为每个文件读取不同的行。我有一个单独的文件,我可以将其作为 data.frame(称之为 "MyFile")读入工作区,该文件在一列中列出了文件名,在另一列中列出了要读取的行,但我不知道如何将字符串转换成我需要的数字。我会使用正则表达式来提取它,但这听起来比我想要的要多,因为它是从 "c(1:10)"
到 "c(2, 4, 6:8, 21)"
的所有内容的大杂烩。
我试过:
Files <- list()
for (i in 1:nrow(MyFiles)){
Files[[i]] <- read.xlsx(MyFiles$File[i],
sheetName = MyFiles$Tab[i],
rowIndex = MyFiles$Row[i])
}
但 R 不知道如何处理行规范,因为它当前正在将其作为字符串读取。
很遗憾没有比 eval(parse(text=
更好的方法(据我所知),但这就是我在这些情况下使用的方法。
input <- "c(1:10)"
output <- eval(parse(text=input))
output
# [1] 1 2 3 4 5 6 7 8 9 10