8 回答

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

TA貢獻1852條經驗 獲得超1個贊
就個人而言,我更喜歡“一個”襯里。一些事情:
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")

TA貢獻1993條經驗 獲得超6個贊
R-help郵件列表有一個發布指南,其中包括詢問和回答問題,包括生成數據的示例:
示例:有時提供一個人可以實際運行的小例子很有幫助。例如:
如果我有一個矩陣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 >
如何將其轉換為包含8行的數據框,以及名為“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")
)
小字這個詞特別重要。您應該瞄準一個可重復性最小的示例,這意味著數據和代碼應盡可能簡單地解釋問題。

TA貢獻1859條經驗 獲得超6個贊
從R.2.14(我猜)你可以直接將數據文本表示提供給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 關注
- 936 瀏覽
添加回答
舉報