从R中的字符串中提取子字符串和数字

Jac*_*tad 7 regex r

我有几个字符串,以下是一些例子.

rfoutputtablep7q10000t20000c100
rfoutputtablep7q1000t20000c100
svmLinear2outputtablep7q20000t20000c100
svmLinear2outputtablep7q5000t20000c100
Run Code Online (Sandbox Code Playgroud)

我想和列的数据帧:algorithm,p,q,t,并c从这些提取字符串的值.所以前面的东西"outputtable"algorithm,后面的数字"p"是值p,数字后面"q"是值q等.

如何创建此数据框?

Rui*_*das 6

仅使用基数R.

res <- do.call(rbind, strsplit(y, 'outputtable|p|q|t|c'))
res <- as.data.frame(res[, -2])
res[-1] <- lapply(res[-1], function(x) as.numeric(as.character(x)))
names(res) <- c("algorithm", "p", "q", "t", "c")
res
#   algorithm p     q     t   c
#1         rf 7 10000 20000 100
#2         rf 7  1000 20000 100
#3 svmLinear2 7 20000 20000 100
#4 svmLinear2 7  5000 20000 100
Run Code Online (Sandbox Code Playgroud)

数据.

y <- scan(text = '"rfoutputtablep7q10000t20000c100"
"rfoutputtablep7q1000t20000c100"
"svmLinear2outputtablep7q20000t20000c100"
"svmLinear2outputtablep7q5000t20000c100"',
what = character())
Run Code Online (Sandbox Code Playgroud)

  • `setNames(data.frame(do.call(rbind, strsplit(x, 'outputtable\\D|p|q|t|c'))), c("A", "p", "q", " t", "c"))` (2认同)