【发布时间】:2013-06-24 11:20:37
【问题描述】:
我必须自动导入许多数据集,第一列是名称,因此是字符向量,第二列是数字向量,因此我将这些规范与 read.table 一起使用: colClasses = c("character" , "数字")。
如果我有一个像这样保存在 df_file 中的数据框,这将非常有用:
df<- data.frame(V1=c("s1","s2","s3","s4"), V2=c("1e-04","1e-04","1e-04","1e-04")
read.table(df_file, header = FALSE, comment.char="", colClasses = c("character", "numeric"), stringsAsFactors=FALSE)
问题是在某些情况下,我在第二列中有具有指数形式的数值的数据框,在这些情况下,导入不起作用,因为它无法将该列识别为数字(或者它导入为“字符" 如果我没有指定 colClasses),那么我的问题是: 即使值是指数的,如何指定要作为数字导入的列?
例如:
df<- data.frame(V1=c("s1","s2","s3","s4"), V2=c("10^(-4)","10^(-4)","10^(-4)","10^(-4)"))
我希望将所有指数值作为数字导入,但即使在导入后我尝试从字符更改为数字时,我也会得到所有“NA”(as.numeric(as.character(df$V2)) "警告信息:强制引入的 NA")
我也尝试将“真实”或“复杂”与 colClasses 一起使用,但它仍将指数作为字符导入。
请帮忙, 谢谢!
【问题讨论】:
-
尝试类似:
as.numeric(gsub("0\\^", "e", gsub("[()]", "", df$V2))) -
嗨,阿伦,谢谢。所以我想没有“简单的出路”吗?意思是,如果我想这样做,我是否必须先导入第二列“as.character”的所有数据集,然后仅在列具有指数项时才这样做?
-
@user2337032,您可以改用
readLines。我已经发布了答案。 -
谢谢你,Arun 你的功能也能正常工作!