簡體   English   中英

read.table 報錯,如何設置column name 為row.name?

[英]Error in read.table, how to set column name as row.name?

誰能解釋這里發生了什么? 設置row.name= NULL與我不指定它時沒有區別,但是當我設置row.names=1時,它說不允許重復 row.names? 如何解決此問題以將 V1 列作為行名?

ak1a = read.table("/Users/abhaykanodia/Desktop/smallRNA/AK1a_counts.txt", row.names = NULL)
head(ak1a)
                  V1 V2
1 ENSG00000000003.15  2
2  ENSG00000000005.6  0
3 ENSG00000000419.14 21
4 ENSG00000000457.14  0
5 ENSG00000000460.17  2
6 ENSG00000000938.13  0
ak1a = read.table("/Users/abhaykanodia/Desktop/smallRNA/AK1a_counts.txt")
head(ak1a)
                  V1 V2
1 ENSG00000000003.15  2
2  ENSG00000000005.6  0
3 ENSG00000000419.14 21
4 ENSG00000000457.14  0
5 ENSG00000000460.17  2
6 ENSG00000000938.13  0
ak1a = read.table("/Users/abhaykanodia/Desktop/smallRNA/AK1a_counts.txt", row.names = 1)
Error in read.table("/Users/abhaykanodia/Desktop/smallRNA/AK1a_counts.txt",  : 
  duplicate 'row.names' are not allowed

從幫助文件中,您可以閱讀:

如果有 header 並且第一行包含的字段比列數少一個,則輸入中的第一列用於行名稱。 否則,如果row.names 缺失,行將被編號

這解釋了設置 row.names=NULL 或使用其默認值時的相同行為。

您可以設置 row.names 在此示例中:

df <- read.table(text="V1 V2
ENSG00000000003.15  2
ENSG00000000005.6  0
ENSG00000000419.14 21
ENSG00000000457.14  0
ENSG00000000460.17  2
ENSG00000000938.13  0", header=TRUE, row.names=letters[1:6])

顯示:

                  V1 V2
a ENSG00000000003.15  2
b  ENSG00000000005.6  0
c ENSG00000000419.14 21
d ENSG00000000457.14  0
e ENSG00000000460.17  2
f ENSG00000000938.13  0

前兩次執行在功能上是一樣的,當你不使用read.table的row.names參數時,假設它的值為NULL。

第三個失敗,因為1被解釋為長度等於用值 1 填充的行數的向量。因此錯誤確認你不能有兩行具有相同的名稱。

您對row.names=1所做的操作等同於嘗試執行以下操作:

test <- read.table(text="X Y
1 2
3 4", header=TRUE)
row.names(test) = c(1,1)

它給出了相同的錯誤。

如果你想命名你的行R1:RX為什么不嘗試這樣的事情:

ak1a = read.table("/Users/abhaykanodia/Desktop/smallRNA/AK1a_counts.txt")
row.names(ak1a) = paste("R",1:dim(ak1a)[1],sep="")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM