使用read.table读取CSV文件会产生一个带引号的表

时间:2014-06-21 21:46:40

标签: r csv read.table

我正在尝试使用read.table命令读取R中的csv文件,而我在R中获得的表在每个条目周围都有双引号。问题是我不能使用带引号的这些条目来进行数学运算。

这是我的阅读命令:

exprs_data <- as.matrix(read.table("Test1.csv",
     sep= ",",header=TRUE,row.names=1,as.is=TRUE))##

这是R中的导入表:

ABC DEF XYZ 
m0122 " 854"    "1487"  "1855"
m0152 "  97"    " 159"  " 468"
m0257 " 157"    " 733"  "   6"

为什么数字周围有引号?我以前从未在R中遇到过这个问题。任何人都可以帮我在R中导入这个csv文件吗?

1 个答案:

答案 0 :(得分:2)

引号表示矩阵中的值是字符串而不是数字。在不知道您的csv文件是什么样的情况下,我怀疑文件中的某些值不是有效数字,并且转换为矩阵(您的as.matrix)语句后,所有内容都将转换为字符串以符合所需的结构矩阵(需要是所有相同的数据类型)。我不完全确定您为什么要进行矩阵转换,但您可以使用read.table参数在colClasses中明确指定数据的类型。试试这个(假设所有列都被视为数字,否则为colClasses中的每一列使用不同值的向量):

exprs_data <- read.table("Test1.csv", sep= ",", header=TRUE, 
                         row.names=1, colClasses = "numeric")

如果需要,您可以将其转换为矩阵,但您也可以直接使用read.table返回的数据框。如评论中所述,您可以通过运行str(exprs_data)来获取变量结构(包括列数据类型)的详细信息。