【发布时间】:2018-05-27 21:51:12
【问题描述】:
我是 R 的新手,目前在读取 .csv 文件并将其转换为带有 7 列的 data.frame 时遇到很多麻烦。这是我正在做的事情:
gene_symbols_table <- as.data.frame(read.csv(file="/home/nikita/Desktop
/CElegans_raw_data/gene_symbols_matching.csv", header=TRUE, sep=","))
在那之后我得到了一个data.frame 和dim = 46761 x 1,但我需要它是46761 x 7。我尝试了以下stackoverflow 线程:
但不知何故,在我的情况下没有任何效果。 以下是表格的外观:
> head(gene_symbols_table, 3)
input.reason.matches.organism.name.primaryIdentifier.symbol.briefDescription.c
lass.secondaryIdentifier
1 WBGene00008675 MATCH 1 Caenorhabditis elegans
WBGene00008675 irld-26 Gene F11A5.7
2 WBGene00008676 MATCH 1 Caenorhabditis elegans
WBGene00008676 oac-15 Gene F11A5.8
3 WBGene00008677 MATCH 1 Caenorhabditis elegans
WBGene00008677 Gene F11A5.9
Excel 中的 .csv 文件如下所示:
input | reason | matches | organism.name | primaryIdentifier | symbol |
briefDescription
WBGene00008675 | MATCH | 1 | Caenorhabditis elegans WBGene00008675 | irld-26 | ...
...
以下代码:
gene_symbols_table <- read.table(file="/home/nikita/Desktop
/CElegans_raw_data/gene_symbols_matching.csv", header=FALSE, sep=",",
col.names = paste0("V",seq_len(7)), fill = TRUE)
似乎工作正常,但是当我查看 dim 时,我可以立即发现它是错误的:20124 x 7。那么:
V1
1input;reason;matches;organism.name;primaryIdentifier;symbol;briefDescription;class;secondaryIdentifier
2 WBGene00008675;MATCH;1;Caenorhabditis
elegans;WBGene00008675;irld-26;;Gene;F11A5.7
3 WBGene00008676;MATCH;1;Caenorhabditis
elegans;WBGene00008676;oac-15;;Gene;F11A5.8
V2 V3 V4 V5
1
2
3
1
所以,错了
read.table 的其他尝试给了我第二个stackoverflow 线程中指定的错误。
我也尝试过将data.frame 与一列拆分为 7,但到目前为止没有成功。
【问题讨论】:
-
将
sep=','更改为sep=';'会发生什么? -
more columns than column names错误 -
我认为您需要包含更多的文件行(显示在文本编辑器中,而不是 Excel 中)才能获得帮助。您的 Excel sn-p 建议您可能需要一个
sep = "|"参数,但这仍然不清楚。另外,来自read.csv()的响应是一个数据框,所以你不需要as.data.frame()。 -
我加了 '|'我自己在这里是为了更好地可视化它。在 Excel 中,这些只是单元格
-
@NikitaVlasenko 您是否有任何方法知道您的数据是否“参差不齐”,这意味着某些行的列数可能多于或少于 7 列?出现该错误的另一个原因是,如果您的数据中有一个没有列名的索引列。