8 回答

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

TA貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超1個(gè)贊
就個(gè)人而言,我更喜歡“一個(gè)”襯里。一些事情:
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)
數(shù)據(jù)結(jié)構(gòu)應(yīng)該模仿作者的問題而不是確切的逐字結(jié)構(gòu)。當(dāng)變量不覆蓋我自己的變量或上帝禁止,函數(shù)(如df)時(shí),我真的很感激。
或者,可以剪切幾個(gè)角并指向預(yù)先存在的數(shù)據(jù)集,例如:
library(vegan)
data(varespec)
ord <- metaMDS(varespec)
不要忘記提及您可能正在使用的任何特殊包裝。
如果你想在更大的物體上展示一些東西,你可以試試
my.df2 <- data.frame(a = sample(10e6), b = sample(letters, 10e6, replace = TRUE))
如果您通過raster包處理空間數(shù)據(jù),則可以生成一些隨機(jī)數(shù)據(jù)。在包裝插圖中可以找到很多例子,但這里有一個(gè)小金塊。
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)
如果您需要實(shí)現(xiàn)的某些空間對象sp,則可以通過“空間”包中的外部文件(如ESRI shapefile)獲取一些數(shù)據(jù)集(請參閱任務(wù)視圖中的空間視圖)。
library(rgdal)
ogrDrivers()
dsn <- system.file("vectors", package = "rgdal")[1]
ogrListLayers(dsn)
ogrInfo(dsn=dsn, layer="cities")
cities <- readOGR(dsn=dsn, layer="cities")

TA貢獻(xiàn)1993條經(jīng)驗(yàn) 獲得超6個(gè)贊
R-help郵件列表有一個(gè)發(fā)布指南,其中包括詢問和回答問題,包括生成數(shù)據(jù)的示例:
示例:有時(shí)提供一個(gè)人可以實(shí)際運(yùn)行的小例子很有幫助。例如:
如果我有一個(gè)矩陣x如下:
> x <- matrix(1:8, nrow=4, ncol=2, dimnames=list(c("A","B","C","D"), c("x","y")) > x x y A 1 5 B 2 6 C 3 7 D 4 8 >
如何將其轉(zhuǎn)換為包含8行的數(shù)據(jù)框,以及名為“row”,“col”和“value”的三列,其維度名稱為“row”和“col”的值,如下所示:
> x.df row col value 1 A x 1
......
(答案可能是:
> x.df <- reshape(data.frame(row=rownames(x), x), direction="long", varying=list(colnames(x)), times=colnames(x), v.names="value", timevar="col", idvar="row")
)
小字這個(gè)詞特別重要。您應(yīng)該瞄準(zhǔn)一個(gè)可重復(fù)性最小的示例,這意味著數(shù)據(jù)和代碼應(yīng)盡可能簡單地解釋問題。

TA貢獻(xiàn)1859條經(jīng)驗(yàn) 獲得超6個(gè)贊
從R.2.14(我猜)你可以直接將數(shù)據(jù)文本表示提供給read.table:
df <- read.table(header=T, text="Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5.0 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa
")
- 8 回答
- 0 關(guān)注
- 935 瀏覽
添加回答
舉報(bào)