[英]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.