24

我正在尝试读取具有重复行名但无法读取的 csv 文件。我收到的错误消息是Error in read.table(file = file, header = header, sep = sep, quote = quote, : duplicate 'row.names' are not allowed.

我正在使用的代码是:

S1N657 <- read.csv("S1N657.csv",header=T,fill=T,col.names=c("dam","anim","temp"))

我的数据示例如下:

did <- c("1N657","1N657","1N657","1N657","1N657","1N657","1N657","1N657","1N657","1N657")
aid <- c(101,102,103,104,105,106,107,108,109,110)
temp <- c(36,38,37,39,35,37,36,34,39,38)

data <- cbind(did,aid,temp)

任何帮助将不胜感激。

4

7 回答 7

33

该函数看到重复的行名,因此您需要处理它。可能最简单的方法是使用row.names=NULL,这将强制行编号 - 换句话说,它将您的第一列视为第一个维度而不是行号,因此添加行号(以 " 开头的连续整数1"。

read.csv("S1N657.csv", header=T,fill=T, col.names=c("dam","anim","temp"), row.names=NULL)
于 2010-11-01T04:51:28.547 回答
3

尝试这个:

S1N657 <- read.csv("S1N657.csv",header=T,fill=T,col.names=c("dam","anim","temp"), 
          row.names = NULL)[,-1]
于 2010-11-01T04:29:06.420 回答
2

我最近遇到的一个问题是标题行中的列数与我在数据本身中的列数不匹配。例如,我的数据是制表符分隔的,所有数据行都有一个尾随制表符。标题行(我手动添加)没有。

我希望对行进行自动编号,但它却将我的第一行视为行名。从文档(我添加的重点):

row.names 行名称向量。这可以是给出实际行名的向量,或者是给出包含行名的表的列的单个数字,或者是给出包含行名的表列的名称的字符串。

如果有标题并且第一行包含的字段比列数少一个,则输入中的第一列用于行名称。否则,如果缺少 row.names,则对行进行编号。

使用 row.names = NULL 强制行编号。缺少或 NULL row.names 生成被认为是“自动”的行名称(而不是由 as.matrix 保留)。

在标题行添加一个额外的制表符,使标题行的列数与数据行的列数相同,从而解决了问题。

于 2012-12-30T22:21:58.253 回答
2

猜测你的 csv 文件是从 xlsx 转换而来的。在第一行的末尾添加一个逗号,删除最后一行,完成

于 2014-04-16T13:29:52.533 回答
1

简而言之,检查您的列名。如果您的第一行是列的名称,则您可能缺少一个或多个名称。

例子:

"a","b","c"
a,b,c,d
a,b,c,d

上面的例子会导致 row.name 错误,因为每行有 4 个值,但只有 3 列被命名。

当我从在线资源构建 csv 时,这发生在我身上。

于 2016-10-05T15:48:11.393 回答
1

I was getting the same "duplicate 'row.names' are not allowed" error for a small CSV. The problem was that somewhere outside of the 14x14 chart area I wanted there was a random cell with a space/other data.

Discovered the answer when I ran it "row.names = NULL" and there were multiple rows of blank data below my table (and therefore multiple duplicate row names all "blank").

Solution was to delete all rows/columns outside the table area, and it worked!

于 2019-07-17T20:20:31.967 回答
0

就我而言,问题来自excel文件。尽管它看起来井井有条,但并没有奏效,我总是收到这样的信息:Error in read.table(file = file, header = header, sep = sep, quote = quote, : duplicate 'row.names' are not allowed.

我试图将我的 excel 矩阵复制粘贴到一个新的空 excel 表中,然后我重新尝试阅读它:它有效!没有错误信息了!

于 2018-11-13T10:24:13.167 回答