由於R是新手,我有一個關於寫入和讀取矢量數據的問題。R在文件IO上產生不同的結果
我的實施例1
n = 100 g = 6 set.seed(g) d <- data.frame(x = unlist(lapply(1:g, function(i) rnorm(n/g, runif(1)*i^2))), y = unlist(lapply(1:g, function(i) rnorm(n/g, runif(1)*i^2)))) plot(d) require(vegan) fit <- cascadeKM(scale(d, center = TRUE, scale = TRUE), 1, 10, iter = 1000) plot(fit, sortg = TRUE, grpmts.plot = TRUE) calinski.best <- as.numeric(which.max(fit$results[2,])) cat("Calinski criterion optimal number of clusters:", calinski.best, "\n")
(source),它打印 「簇Calinski標準最佳數目:5」 如預期。
實施例2:(寫入數據幀d第一,然後將其讀)
n = 100 g = 6 set.seed(g) d <- data.frame(x = unlist(lapply(1:g, function(i) rnorm(n/g, runif(1)*i^2))), y = unlist(lapply(1:g, function(i) rnorm(n/g, runif(1)*i^2)))) write.table(d, "d.txt", sep='\t', quote=FALSE) #write data frame d = read.table("d.txt", header=TRUE, sep = '\t') #read later plot(d) require(vegan) fit <- cascadeKM(scale(d, center = TRUE, scale = TRUE), 1, 10, iter = 1000) plot(fit, sortg = TRUE, grpmts.plot = TRUE) calinski.best <- as.numeric(which.max(fit$results[2,])) cat("Calinski criterion optimal number of clusters:", calinski.best, "\n")
然而,實施例2頁的打印 「簇Calinski標準最佳數量:1」。
我認爲格式(或別的東西)已經在R從文件中的IO後改變了。但是我不知道R如何讀寫數字。任何人都可以給我一些線索,謝謝。
編輯 如果文件寫入時沒有列名和行名,問題就解決了。
write.table(d, "d.txt", sep='\t', quote=FALSE, row.name=FALSE, col.names=FALSE)
讀取時,R還讀取行和列名。 另一個是在閱讀時逃避這些名字。
情節在兩種情況下都是一樣的嗎?代碼看起來完全一樣... 你再次閱讀後再打印,以便比較它是否相同(也許只是它的'head'會做'head(d)') – Llopis
這個圖是一樣的,打印表框d的相同。 – user200340
將數字寫入文本文件很可能會失去一些精度。改用'save'或'saveRDS'。 –