行名が繰り返されている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)
どんな助けでもありがたいです。
関数は重複する行名を参照しているので、それに対処する必要があります。おそらく最も簡単な方法は、row.names = NULLを使用することです。これにより、行番号が強制的に付けられます。つまり、最初の列を行番号としてではなく、最初の次元として、行番号( "1"で始まる連続した整数)を追加します。
read.csv("S1N657.csv", header=T,fill=T, col.names=c("dam","anim","temp"), row.names=NULL)
これを試して:
S1N657 <- read.csv("S1N657.csv",header=T,fill=T,col.names=c("dam","anim","temp"),
row.names = NULL)[,-1]
最近私が抱えていた問題は、ヘッダー行の列数がデータ自体の列数と一致しないことでした。たとえば、データがタブ区切りで、すべてのデータ行に末尾のタブ文字が含まれていました。ヘッダー行(私が手動で追加したもの)はそうしませんでした。
行に自動番号付けをしたかったのですが、代わりに最初の行を行名として見ていました。ドキュメントから(私が追加した強調):
row.names行名のベクトル。これは、実際の行名を示すベクトル、または行名を含むテーブルの列を示す単一の数値、または行名を含むテーブル列の名前を示す文字列にすることができます。
ヘッダーがあり、最初の行に含まれるフィールド数が列数よりも1つ少ない場合、入力の最初の列が行名に使用されます。それ以外の場合、row.namesがない場合は、行に番号が付けられます。
Row.names = NULLを使用すると、強制的に行番号が付けられます。行がない、またはNULLの場合、row.namesは「自動」と見なされる(as.matrixによって保持されない)行名を生成します。
ヘッダー行に余分なタブ文字を追加すると、ヘッダー行の列数がデータ行と同じになるため、問題が解決します。
あなたのcsvファイルはxlsxから変換されたものだと思います。最初の行の終わりにコンマを追加し、最後の行を削除して、完了
小さなCSVで同じ「重複した 'row.names'は許可されていません」エラーが発生しました。問題は、14x14チャート領域の外側のどこかに、スペースやその他のデータを含むランダムなセルがあることでした。
「row.names = NULL」を実行すると、答えが見つかりました。テーブルの下に空白データの複数の行がありました(したがって、複数の重複する行名はすべて「空白」です)。
解決策は、テーブル領域外のすべての行/列を削除することでしたが、うまくいきました!
つまり、列名を確認するです。最初の行が列の名前である場合、1つ以上の名前が欠落している可能性があります。
例:
"a","b","c"
a,b,c,d
a,b,c,d
上記の例では、各行に4つの値があるのに3つの列しか指定されていないため、row.nameエラーが発生します。
これは、オンラインリソースからcsvを構築していたときに起こりました。
私の場合、問題はExcelファイルにありました。完全に整理されているように見えましたが、機能せず、常にメッセージがありました:Error in read.table(file = file, header = header, sep = sep, quote = quote, : duplicate 'row.names' are not allowed.
Excelマトリックスを新しい空のExcelシートにコピーして貼り付けようとしたところ、読み直そうとしましたが、うまくいきました。エラーメッセージはもうありません!