คำถามติดแท็ก r-faq

แท็ก r-faq ถูกสร้างขึ้นเพื่อจัดกลุ่มคำถามจำนวน จำกัด ที่พูดถึงปัญหาที่เกิดขึ้นเป็นประจำในแท็ก R ไม่ใช่คำถามที่พบบ่อยอย่างเป็นทางการเกี่ยวกับ R สำหรับ SO แต่ควรทำหน้าที่เป็นแหล่งข้อมูลที่น่าสนใจเกี่ยวกับปัญหาที่พบบ่อย

11
อ่านตารางที่มีขนาดใหญ่มากอย่างรวดเร็วเป็น dataframes
ฉันมีตารางขนาดใหญ่มาก (30 ล้านแถว) ที่ฉันต้องการโหลดเนื่องจาก dataframes ในอาร์ read.table()มีคุณสมบัติที่สะดวกมากมาย แต่ดูเหมือนว่ามีเหตุผลมากมายในการใช้งานที่จะทำให้สิ่งต่าง ๆ ช้าลง ในกรณีของฉันฉันสมมติว่าฉันรู้ชนิดของคอลัมน์ล่วงหน้าตารางไม่ได้มีส่วนหัวคอลัมน์หรือชื่อแถวและไม่มีตัวละครทางพยาธิวิทยาใด ๆ ที่ฉันต้องกังวล ฉันรู้ว่าการอ่านตารางเป็นรายการที่ใช้scan()สามารถทำได้ค่อนข้างเร็วเช่น: datalist <- scan('myfile',sep='\t',list(url='',popularity=0,mintime=0,maxtime=0))) แต่บางส่วนของความพยายามของฉันในการแปลงไฟล์นี้เป็น dataframe ดูเหมือนว่าจะลดประสิทธิภาพการทำงานของข้างต้นด้วยปัจจัย 6: df <- as.data.frame(scan('myfile',sep='\t',list(url='',popularity=0,mintime=0,maxtime=0)))) มีวิธีที่ดีกว่าในการทำเช่นนี้? หรืออาจเป็นแนวทางที่แตกต่างอย่างสิ้นเชิงกับปัญหา
503 r  import  dataframe  r-faq 

16
สร้าง data.frame ที่ว่างเปล่า
ฉันพยายามเริ่มต้น data.frame โดยไม่ต้องแถวใด ๆ โดยทั่วไปฉันต้องการระบุชนิดข้อมูลสำหรับแต่ละคอลัมน์และตั้งชื่อ แต่ไม่ได้สร้างแถวใด ๆ สิ่งที่ดีที่สุดที่ฉันสามารถทำได้จนถึงตอนนี้คือ: df <- data.frame(Date=as.Date("01/01/2000", format="%m/%d/%Y"), File="", User="", stringsAsFactors=FALSE) df <- df[-1,] ซึ่งสร้าง data.frame ด้วยแถวเดียวที่มีประเภทข้อมูลและชื่อคอลัมน์ทั้งหมดที่ฉันต้องการ แต่ยังสร้างแถวที่ไร้ประโยชน์ซึ่งจะต้องลบออก มีวิธีที่ดีกว่าในการทำเช่นนี้?
480 r  dataframe  r-faq 

2
ทำไม `['ดีกว่า` เซตย่อย'
เมื่อฉันต้องการกรอง data.frame เช่นแยกแถวที่ตรงตามเงื่อนไขฉันต้องการใช้subsetฟังก์ชั่น: subset(airquality, Month == 8 & Temp > 90) มากกว่า[ฟังก์ชั่น: airquality[airquality$Month == 8 & airquality$Temp > 90, ] มีสองเหตุผลหลักสำหรับการตั้งค่าของฉัน: ฉันพบว่ารหัสอ่านดีขึ้นจากซ้ายไปขวา แม้แต่คนที่ไม่รู้อะไรเลยเกี่ยวกับอาร์ก็สามารถบอกได้ว่าsubsetข้อความข้างต้นกำลังทำอะไรอยู่ เนื่องจากคอลัมน์สามารถเรียกได้ว่าเป็นตัวแปรในselectนิพจน์ฉันสามารถบันทึกการกดแป้นบางครั้งได้ ในตัวอย่างของฉันข้างต้นผมมีเพียงพิมพ์airqualityครั้งด้วยแต่สามครั้งด้วยsubset[ ดังนั้นฉันจึงมีความสุขใช้กับsubsetทุกที่เพราะสั้นกว่าและอ่านได้ดีขึ้นแม้จะสนับสนุนความงามของมันให้กับนักเขียนโค้ด R ของฉัน แต่เมื่อวานโลกของฉันแตกสลาย ขณะอ่านsubsetเอกสารฉันสังเกตเห็นส่วนนี้: คำเตือน นี่คือฟังก์ชั่นอำนวยความสะดวกสำหรับการใช้งานแบบโต้ตอบ สำหรับการเขียนโปรแกรมจะเป็นการดีกว่าที่จะใช้ฟังก์ชั่นการแบ่งย่อยมาตรฐานเช่น [และโดยเฉพาะอย่างยิ่งการประเมินที่ไม่ได้มาตรฐานของชุดย่อยของอาร์กิวเมนต์สามารถมีผลที่ไม่คาดคิด ใครช่วยอธิบายสิ่งที่ผู้แต่งหมายถึงได้บ้าง ก่อนอื่นพวกเขาหมายถึง " เพื่อใช้แบบโต้ตอบ "? ฉันรู้ว่าเซสชันแบบโต้ตอบคืออะไรเมื่อเทียบกับสคริปต์ที่ทำงานในโหมดแบทช์ แต่ฉันไม่เห็นความแตกต่างที่ควรทำ จากนั้นคุณช่วยอธิบาย " การประเมินผลที่ไม่ได้มาตรฐานของชุดย่อยของข้อโต้แย้ง " และทำไมมันอันตรายหรืออาจเป็นตัวอย่าง?
400 r  filter  subset  r-faq 


6
ฉันจะติดตั้งแพ็คเกจ R จากแหล่งที่มาได้อย่างไร
เพื่อนส่งมาให้ผมพร้อมกวดวิชาที่ดีนี้ในwebscraping NYTimes กับ R ฉันชอบที่จะลอง อย่างไรก็ตามขั้นตอนแรกคือการติดตั้งแพคเกจที่เรียกว่า RJSONIO จากแหล่งที่มา ฉันรู้ว่า R ค่อนข้างดี แต่ฉันไม่รู้ว่าจะติดตั้งแพ็คเกจจากแหล่งที่มาได้อย่างไร ฉันใช้ Mac OSX
392 r  package  install  r-faq 

30
มีฟังก์ชันในตัวสำหรับค้นหาโหมดหรือไม่
ใน R mean()และmedian()เป็นฟังก์ชั่นมาตรฐานที่ทำในสิ่งที่คุณคาดหวัง mode()บอกโหมดการเก็บข้อมูลภายในของวัตถุไม่ใช่ค่าที่เกิดขึ้นมากที่สุดในการโต้แย้ง แต่มีฟังก์ชันไลบรารีมาตรฐานที่ใช้โหมดสถิติสำหรับเวกเตอร์ (หรือรายการ) หรือไม่?
392 r  statistics  r-faq 

12
การรวมสองสตริงสามารถเชื่อมโยงกันได้อย่างไร
ฉันจะเชื่อมสองค่า (ผสานรวมกัน) เข้าด้วยกันได้อย่างไร เช่นฉันมี: tmp = cbind("GAD", "AB") tmp # [,1] [,2] # [1,] "GAD" "AB" เป้าหมายของฉันคือการเชื่อมสองค่าใน "tmp" กับหนึ่งสตริง: tmp_new = "GAD,AB" ฟังก์ชั่นใดสามารถทำได้สำหรับฉัน

10
แยกคอลัมน์เฉพาะจากกรอบข้อมูล
ฉันมีเฟรมข้อมูล R ที่มี 6 คอลัมน์และฉันต้องการสร้างดาต้าเฟรมใหม่ที่มีเพียงสามคอลัมน์เท่านั้น สมมติว่าเฟรมข้อมูลของฉันเป็นdfและฉันต้องการที่จะคอลัมน์สารสกัดA, BและEนี้เป็นเพียงคำสั่งฉันจะคิดออก: data.frame(df$A,df$B,df$E) มีวิธีที่กะทัดรัดกว่านี้อีกไหม?
365 r  dataframe  r-faq 

13
วิธีการตัดช่องว่างชั้นนำและต่อท้าย?
ฉันมีปัญหากับช่องว่างนำหน้าและต่อท้ายใน data.frame เช่นฉันชอบที่จะดูเฉพาะrowในdata.frameตามเงื่อนไขบางอย่าง: > myDummy[myDummy$country == c("Austria"),c(1,2,3:7,19)] [1] codeHelper country dummyLI dummyLMI dummyUMI [6] dummyHInonOECD dummyHIOECD dummyOECD <0 rows> (or 0-length row.names) ฉันสงสัยว่าทำไมฉันไม่ได้รับผลลัพธ์ที่คาดหวังเนื่องจากประเทศออสเตรียมีอยู่ในตัวฉันdata.frameอย่างชัดเจน หลังจากดูประวัติรหัสของฉันและพยายามหาสิ่งที่ผิดพลาดฉันพยายาม: > myDummy[myDummy$country == c("Austria "),c(1,2,3:7,19)] codeHelper country dummyLI dummyLMI dummyUMI dummyHInonOECD dummyHIOECD 18 AUT Austria 0 0 0 0 1 dummyOECD 18 1 ทั้งหมดที่ฉันมีการเปลี่ยนแปลงในคำสั่งเป็นช่องว่างเพิ่มเติมหลังจากออสเตรีย ปัญหาที่น่ารำคาญเพิ่มเติมอย่างเห็นได้ชัดเกิดขึ้น เช่นเมื่อฉันต้องการรวมสองเฟรมตามคอลัมน์ประเทศ …

15
วิธีหาผลรวมของตัวแปรตามกลุ่ม
ฉันมีกรอบข้อมูลที่มีสองคอลัมน์ คอลัมน์แรกมีหมวดหมู่เช่น "First", "Second", "Third" และคอลัมน์ที่สองมีตัวเลขที่แสดงถึงจำนวนครั้งที่ฉันเห็นกลุ่มเฉพาะจาก "หมวดหมู่" ตัวอย่างเช่น: Category Frequency First 10 First 15 First 5 Second 2 Third 14 Third 20 Second 3 ฉันต้องการเรียงลำดับข้อมูลตามหมวดหมู่และรวมความถี่ทั้งหมด: Category Frequency First 30 Second 5 Third 34 ฉันจะทำสิ่งนี้ใน R ได้อย่างไร
357 r  dataframe  aggregate  r-faq 

8
จะเพิ่มศูนย์นำหน้าได้อย่างไร
ฉันมีชุดข้อมูลซึ่งมีลักษณะดังนี้: anim <- c(25499,25500,25501,25502,25503,25504) sex <- c(1,2,2,1,2,1) wt <- c(0.8,1.2,1.0,2.0,1.8,1.4) data <- data.frame(anim,sex,wt) data anim sex wt anim2 1 25499 1 0.8 2 2 25500 2 1.2 2 3 25501 2 1.0 2 4 25502 1 2.0 2 5 25503 2 1.8 2 6 25504 1 1.4 2 ฉันต้องการเพิ่มศูนย์ก่อนหน้า id …

5
วิธีเขียน trycatch ใน R
ฉันต้องการเขียนtrycatchโค้ดเพื่อจัดการกับข้อผิดพลาดในการดาวน์โหลดจากเว็บ url <- c( "http://stat.ethz.ch/R-manual/R-devel/library/base/html/connections.html", "http://en.wikipedia.org/wiki/Xz") y <- mapply(readLines, con=url) คำสั่งสองคำสั่งเหล่านี้ทำงานได้สำเร็จ ด้านล่างนี้ฉันสร้างที่อยู่เว็บที่ไม่มีอยู่: url <- c("xxxxx", "http://en.wikipedia.org/wiki/Xz") url[1]ไม่ได้อยู่. เราจะเขียนtrycatchloop (function) อย่างไร: เมื่อ URL ไม่ถูกต้องผลลัพธ์จะเป็น: "เว็บ URL ไม่ถูกต้องไม่สามารถรับได้" เมื่อ URL ผิดรหัสจะไม่หยุด แต่ยังคงดาวน์โหลดต่อไปจนกว่าจะสิ้นสุดรายการ URL หรือไม่

28
วิธีที่สวยงามในการตรวจสอบแพ็คเกจที่หายไปและติดตั้งหรือไม่
ฉันดูเหมือนจะแบ่งปันรหัสจำนวนมากกับผู้เขียนร่วมสมัยนี้ หลายคนเป็นผู้ใช้มือใหม่และระดับกลางและไม่รู้ตัวว่าต้องติดตั้งแพ็คเกจที่ยังไม่มี มีวิธีโทรที่หรูหราinstalled.packages()เปรียบเทียบกับวิธีที่ฉันกำลังโหลดและติดตั้งหากไม่มีหรือไม่
337 r  packages  r-faq 

11
ตัวอย่างสุ่มแถวใน dataframe
ฉันกำลังพยายามหาฟังก์ชั่นที่เหมาะสมซึ่งจะคืนค่าจำนวนแถวที่ระบุแบบสุ่มโดยไม่ต้องเปลี่ยนจาก data frame ในภาษา R หรือไม่? ใครช่วยฉันออกได้บ้าง
333 r  dataframe  sample  r-faq 

11
หนึ่งคอลัมน์ที่เรียงลำดับใหม่ใน data frame อย่างไร
เราจะเปลี่ยนอินพุตนี้อย่างไร (โดยมีลำดับ: เวลา, เข้า, ออก, ไฟล์): Time In Out Files 1 2 3 4 2 3 4 5 ไปที่เอาต์พุตนี้ (โดยมีลำดับ: time, out, in, files)? Time Out In Files 1 3 2 4 2 4 3 5 นี่คือข้อมูลจำลอง Dummy: table <- data.frame(Time=c(1,2), In=c(2,3), Out=c(3,4), Files=c(4,5)) table ## Time In Out Files …
311 r  sorting  dataframe  r-faq 

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.