كيف يمكنني تحميل مثال مجموعات البيانات في R؟
سؤال
دعنا نقول أنني أريد إعادة إنتاج مثال تم نشره على Stackoverflow. اقترح البعض استخدام الملصقات dput()
للمساعدة في تبسيط هذه العملية أو واحد من مجموعات البيانات المتاحة في الحزمة الأساسية.
ومع ذلك ، في هذه الحالة ، لنفترض أنني لم أحصل إلا على إخراج DataFrame:
> site.data
site year peak
1 ALBEN 5 101529.6
2 ALBEN 10 117483.4
3 ALBEN 20 132960.9
8 ALDER 5 6561.3
9 ALDER 10 7897.1
10 ALDER 20 9208.1
15 AMERI 5 43656.5
16 AMERI 10 51475.3
17 AMERI 20 58854.4
هل لدي خيارات أخرى إلى جانب حفظ هذا كملف نصي واستخدام read.table()
?
المحلول 2
هذا خيار واحد مفيد:
site.data <- read.table(textConnection(
" site year peak
1 ALBEN 5 101529.6
2 ALBEN 10 117483.4
3 ALBEN 20 132960.9
8 ALDER 5 6561.3
9 ALDER 10 7897.1
10 ALDER 20 9208.1
15 AMERI 5 43656.5
16 AMERI 10 51475.3
17 AMERI 20 58854.4"))
نصائح أخرى
هذا حل أنيق. أظن أن هناك طريقة للقيام بذلك مع rcurl ، كما هو الحال في هذا المنشور الذي خلع عن ويكيبيديا.
ولكن كنقطة أكثر عمومية للمناقشة: لماذا لا نستخدم البيانات فقط من حزمة "مجموعات البيانات" في R؟ ثم سيكون لدى الجميع البيانات عن طريق الاتصال فقط بوظيفة البيانات () ، وهناك مجموعات بيانات لتغطية معظم الحالات.
يحرر]: كنت قادرا على القيام بذلك. من الواضح أنه عمل أكثر (أي غير عملي) من الحل الخاص بك. قون
تحرير 2]: لفت هذا في وظيفة وجربته مع صفحة أخرى.
getSOTable <- function(url, code.block=2, raw=FALSE, delimiter="code") {
require(RCurl)
require(XML)
webpage <- getURL(url)
webpage <- readLines(tc <- textConnection(webpage)); close(tc)
pagetree <- htmlTreeParse(webpage, error=function(...){}, useInternalNodes = TRUE)
x <- xpathSApply(pagetree, paste("//*/", delimiter, sep=""), xmlValue)[code.block]
if(raw)
return(strsplit(x, "\n")[[1]])
else
return(read.table(textConnection(strsplit(x, "\n")[[1]][-1])))
}
getSOTable("https://stackoverflow.com/questions/1434897/how-do-i-load-example-datasets-in-r")
site year peak
1 ALBEN 5 101529.6
2 ALBEN 10 117483.4
3 ALBEN 20 132960.9
8 ALDER 5 6561.3
9 ALDER 10 7897.1
10 ALDER 20 9208.1
15 AMERI 5 43656.5
16 AMERI 10 51475.3
17 AMERI 20 58854.4
getSOTable("https://stackoverflow.com/questions/1428174/quickly-generate-the-cartesian-product-of-a-matrix", code.block=10)
X1 X2 X3 X4
1 1 11 1 11
2 1 11 2 12
3 1 11 3 13
4 1 11 4 14
5 1 11 5 15
6 1 11 6 16
7 1 11 7 17
8 1 11 8 18
9 1 11 9 19
10 1 11 10 20