2016-11-15 29 views
0

我是R新手。我想用「write.csv」命令在R中編寫一個csv文件。不幸的是,當我這樣做時,生成的數據框會生成帶有儘管該文件已經有一個列名,但在它前綴X之前。R中列名的問題

它產生,X_name1,X_name2

請請告訴我你的建議

我已經加入類似我的數據的示例代碼。

a<- c("1","2") 
b <- c("3","4") 
df <- rbind(a,b) 
df <- as.data.frame(df) 
names(df) <- c("11_a","12_b") 
write.csv(df,"mydf.csv") 
a <- read.csv("mydf.csv") 
a 

#Result 
    X X11_a X12_b 
1 a  1  2 
2 b  3  4 

所有我需要的是有唯一的「11_a」和「12_b」列名。但它也包含前綴X.

+1

顯示你的代碼和數據會有所幫助。列名是否以數字開頭? – BLT

+1

只需執行'write.csv(...,col.names = T)'。從文檔(在R提示符處嘗試'?write.csv')「col.names:指示x的列名是要與x一起寫入的邏輯值,還是要寫入的列名的字符向量。有關col.names = NA的含義,請參閱'CSV文件'一節。「 –

+0

是的。它以數字開頭。 – Gene

回答

4

使用在讀您的數據備份時check.names=FALSE - 從數字的名字是不是R中普遍接受的:

read.csv(text="11_a,12_b 
a,1,2 
b,3,4", check.names=FALSE) 

# 11_a 12_b 
#a 1 2 
#b 3 4 

read.csv(text="11_a,12_b 
a,1,2 
b,3,4", check.names=TRUE) 

# X11_a X12_b 
#a  1  2 
#b  3  4 
+1

擊敗了我... ...現在,當讀取csv文件時,使用'names(df)< - c(「a11」,「b12」)「和」check.names = F「看到不同之處。基本上,R不喜歡以數字開頭的列名。從手冊頁「check.names \t:logical」,如果爲TRUE,那麼將檢查數據框中變量的名稱以確保它們是語法上有效的變量名稱,如果需要,可以調整它們(通過make.names),以便它們是,也是爲了確保沒有重複。「 –

+0

@ thelatemail ..非常感謝。有用 :) 。我輸入了一個< - read.csv(「mydf.csv」,check.names = F)。 – Gene

+0

@John Smith。謝謝。它適用於這些數據。但我不能使用這個名稱(df)作爲我的原始數據,因爲它有很多列。 – Gene

0

當您讀取.csv文件時,您只需將header=TRUE添加到代碼中即可。它看起來像:

a <- read.csv("mydf.csv", header=TRUE) 
+0

它沒有工作。它仍然顯示X – Gene