3 回答

TA貢獻1805條經驗 獲得超9個贊
(這是我對如何寫一個可重復的例子的建議。我試圖讓它變短但很甜)
如何編寫可重現的示例。
如果您提供可重現的示例,您最有可能獲得R問題的良好幫助。一個可重現的示例允許其他人通過復制和粘貼R代碼來重新創建您的問題。
為了使您的示例可重現,您需要包含四件事:所需的包,數據,代碼和R環境的描述。
應該在腳本的頂部加載包,因此很容易看到示例需要哪些包。
在電子郵件或Stack Overflow問題中包含數據的最簡單方法是使用
dput()
生成R代碼來重新創建它。例如,要mtcars
在R中重新創建數據集,我將執行以下步驟:dput(mtcars)
在R中運行復制輸出
在我可重現的腳本中,鍵入
mtcars <-
然后粘貼。花一點時間確保您的代碼易于其他人閱讀:
確保你已經使用了空格,你的變量名稱簡潔,但信息豐富
使用注釋來指出問題所在
盡力刪除與問題無關的所有內容。
代碼越短,理解起來就越容易。sessionInfo()
在代碼中包含注釋的輸出。這總結了您的R環境,并且可以輕松檢查您是否使用了過時的軟件包。
你可以通過啟動一個新的R會話并粘貼你的腳本來檢查你是否真的做了一個可重現的例子。
在將所有代碼放入電子郵件之前,請考慮將其放在Gist github上。它將為您的代碼提供良好的語法突出顯示,您不必擔心電子郵件系統會破壞任何內容。

TA貢獻1858條經驗 獲得超8個贊
就個人而言,我更喜歡“一個”襯里。一些事情:
my.df <- data.frame(col1 = sample(c(1,2), 10, replace = TRUE), col2 = as.factor(sample(10)), col3 = letters[1:10], col4 = sample(c(TRUE, FALSE), 10, replace = TRUE))my.list <- list(list1 = my.df, list2 = my.df[3], list3 = letters)
數據結構應該模仿作者的問題而不是確切的逐字結構。當變量不覆蓋我自己的變量或上帝禁止,函數(如df
)時,我真的很感激。
或者,可以剪切幾個角并指向預先存在的數據集,例如:
library(vegan)data(varespec)ord <- metaMDS(varespec)
不要忘記提及您可能正在使用的任何特殊包裝。
如果你想在更大的物體上展示一些東西,你可以試試
my.df2 <- data.frame(a = sample(10e6), b = sample(letters, 10e6, replace = TRUE))
如果您通過raster
包處理空間數據,則可以生成一些隨機數據。在包裝插圖中可以找到很多例子,但這里有一個小金塊。
library(raster)r1 <- r2 <- r3 <- raster(nrow=10, ncol=10)values(r1) <- runif(ncell(r1))values(r2) <- runif(ncell(r2))values(r3) <- runif(ncell(r3))s <- stack(r1, r2, r3)
如果您需要實現的某些空間對象sp
,則可以通過“空間”包中的外部文件(如ESRI shapefile)獲取一些數據集(請參閱任務視圖中的空間視圖)。
library(rgdal)ogrDrivers()dsn <- system.file("vectors", package = "rgdal")[1]ogrListLayers(dsn)ogrInfo(dsn=dsn, layer="cities")cities <- readOGR(dsn=dsn, layer="cities")
- 3 回答
- 0 關注
- 751 瀏覽
添加回答
舉報