坦率地说,处理这种情况的最佳方法是在将源文件读入R 之前对其进行编辑。我可以想象没有理由避免这种情况,需要编写一些花哨的R 代码来删除读取数据后的括号。
打开您选择的文本编辑器并告诉它(编辑器)删除所有括号。保存文件(必要时保存到新文件),然后使用 read.csv 打开新文件。
但如果必须的话,
foo<- read.csv(your_file)
gsub('(','',foo)
gsub(')','',foo)
foo[,2]<-as.numeric(foo[,2])
编辑:运行速度测试:
paren1<-function(file) {
foo<- read.csv(file)
gsub('[()]','',foo)
#gsub(')','',foo)
foo[,2]<-as.numeric(foo[,2])
}
setClass("strippedL")
setClass("strippedR")
setAs("character", "strippedL",
function(from) as.character( gsub("(", "", from, fixed=TRUE)))
setAs("character", "strippedR",
function(from) as.numeric( gsub(")", "", from, fixed=TRUE)))
paren2<-function(file) {
foo<- read.table(file,sep = ",", header = FALSE, colClasses = c("strippedL", "strippedR"))
return(invisible(foo))
}
library(microbenchmark)
# my "paren.txt" has 860 lines in it
microbenchmark(paren1('paren.txt'),paren2('paren.txt'))
Unit: milliseconds
expr min lq median uq max neval
paren1("paren.txt") 3.341024 3.461614 3.486416 3.514639 4.060715 100
paren2("paren.txt") 2.164631 2.251439 2.285007 2.322211 5.681836 100
因此,Ananda 的解决方案明显更快。哦,好吧:-)