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

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

6
“ วิธี S3” หมายถึงอะไรใน R?
เนื่องจากฉันค่อนข้างใหม่กับ R ฉันจึงไม่รู้ว่าวิธี S3 และวัตถุคืออะไร ฉันพบว่ามีระบบอ็อบเจ็กต์ S3 และ S4 และบางส่วนแนะนำให้ใช้ S3 มากกว่า S4 หากเป็นไปได้ (ดูคู่มือสไตล์ R ของ Google ที่http://google-styleguide.googlecode.com/svn/trunk/google-r-style html ) *. อย่างไรก็ตามฉันไม่ทราบคำจำกัดความที่แน่นอนของวิธี / วัตถุ S3 อัปเดต: ในปี 2019 ไฮเปอร์ลิงก์ R Style Guide ของ Google อยู่ที่นี่แล้ว
125 r  oop  r-faq  r-s3  r-s4 

8
เลือกคอลัมน์เฟรมข้อมูลแบบไดนามิกโดยใช้ $ และค่าอักขระ
ฉันมีเวกเตอร์ของชื่อคอลัมน์ที่แตกต่างกันและฉันต้องการให้สามารถวนซ้ำแต่ละคอลัมน์เพื่อแยกคอลัมน์นั้นออกจาก data.frame ตัวอย่างเช่นพิจารณาข้อมูลชุดและบางชื่อตัวแปรที่เก็บไว้ในเวกเตอร์ของตัวละครmtcars colsเมื่อฉันพยายามเลือกตัวแปรจากการmtcarsใช้ชุดย่อยแบบไดนามิกcolsจากงานเหล่านี้ cols <- c("mpg", "cyl", "am") col <- cols[1] col # [1] "mpg" mtcars$col # NULL mtcars$cols[1] # NULL ฉันจะรับสิ่งเหล่านี้กลับค่าเดียวกับ mtcars$mpg นอกจากนี้ฉันจะวนซ้ำคอลัมน์ทั้งหมดcolsเพื่อรับค่าในลูปบางประเภทได้อย่างไร for(x in seq_along(cols)) { value <- mtcars[ order(mtcars$cols[x]), ] }
122 r  dataframe  r-faq 

14
นับจำนวนแถวในแต่ละกลุ่ม
ฉันมี dataframe และฉันต้องการนับจำนวนแถวในแต่ละกลุ่ม ฉันใช้aggregateฟังก์ชันเพื่อสรุปข้อมูลดังต่อไปนี้: df2 <- aggregate(x ~ Year + Month, data = df1, sum) ตอนนี้ผมอยากจะนับข้อสังเกต FUNแต่ไม่สามารถดูเหมือนจะหาข้อโต้แย้งที่เหมาะสมสำหรับ โดยสัญชาตญาณฉันคิดว่ามันจะเป็นดังนี้: df2 <- aggregate(x ~ Year + Month, data = df1, count) แต่โชคไม่ดี ความคิดใด ๆ ? ข้อมูลของเล่นบางส่วน: set.seed(2) df1 <- data.frame(x = 1:20, Year = sample(2012:2014, 20, replace = TRUE), Month = sample(month.abb[1:3], …
121 r  dataframe  aggregate  r-faq 

13
คำแนะนำทั่วไปสำหรับการดีบักใน R
ฉันได้รับข้อผิดพลาดเมื่อใช้ฟังก์ชัน R ที่ฉันเขียน: Warning messages: 1: glm.fit: algorithm did not converge 2: glm.fit: algorithm did not converge สิ่งที่ฉันทำ: ก้าวผ่านฟังก์ชั่น glm.fitการเพิ่มการพิมพ์เพื่อหาสิ่งที่สายข้อผิดพลาดเกิดขึ้นแสดงให้เห็นทั้งสองฟังก์ชั่นที่ไม่ควรใช้ พวกเขาเป็นและwindow()save() วิธีการทั่วไปของฉันรวมถึงการเพิ่มprintและstopคำสั่งและการดำเนินการตามฟังก์ชันทีละบรรทัดจนกระทั่งฉันสามารถค้นหาข้อยกเว้นได้ อย่างไรก็ตามไม่ชัดเจนสำหรับฉันที่ใช้เทคนิคเหล่านั้นซึ่งข้อผิดพลาดนี้มาจากโค้ด glm.fitผมไม่ได้บางอย่างที่ฟังก์ชั่นภายในรหัสขึ้นอยู่กับ ฉันจะวินิจฉัยปัญหานี้ได้อย่างไร
120 r  debugging  r-faq 

4
ฟังก์ชัน%>% หมายถึงอะไรใน R?
ฉันได้เห็นการใช้งานของ%>%(สูงกว่าร้อยละร้อยละ) ฟังก์ชั่นในแพคเกจบางอย่างเช่นdplyrและrvest หมายความว่าอย่างไร? เป็นวิธีเขียนปิดบล็อคใน R หรือไม่?
120 r  syntax  dplyr  magrittr  r-faq 

5
ส่งชื่อคอลัมน์ data.frame ไปยังฟังก์ชัน
ฉันกำลังพยายามเขียนฟังก์ชันเพื่อยอมรับ data.frame ( x) และ a columnจากมัน ฟังก์ชันทำการคำนวณบางอย่างบน x และส่งคืน data.frame อื่นในภายหลัง ฉันติดอยู่กับวิธีการปฏิบัติที่ดีที่สุดในการส่งชื่อคอลัมน์ไปยังฟังก์ชัน สองตัวอย่างน้อยที่สุดfun1และfun2ด้านล่างให้ผลลัพธ์ที่ต้องการสามารถดำเนินการได้x$columnโดยใช้max()เป็นตัวอย่าง อย่างไรก็ตามทั้งสองต้องพึ่งพาสิ่งที่ดูเหมือน (อย่างน้อยก็สำหรับฉัน) ไม่สง่างาม โทรหาsubstitute()และอาจเป็นไปได้eval() จำเป็นต้องส่งชื่อคอลัมน์เป็นเวกเตอร์อักขระ fun1 <- function(x, column){ do.call("max", list(substitute(x[a], list(a = column)))) } fun2 <- function(x, column){ max(eval((substitute(x[a], list(a = column))))) } df <- data.frame(B = rnorm(10)) fun1(df, "B") fun2(df, "B") ฉันต้องการเรียกใช้ฟังก์ชันดังfun(df, B)ตัวอย่างเช่น ตัวเลือกอื่น …
119 r  dataframe  r-faq 

9
เหตุใดคำสั่ง ifelse ของ R จึงไม่สามารถส่งคืนเวกเตอร์ได้
ฉันพบว่าคำสั่ง ifelse ของ R มีประโยชน์เป็นครั้งคราว ตัวอย่างเช่น: ifelse(TRUE,1,2) # [1] 1 ifelse(FALSE,1,2) # [1] 2 แต่ฉันค่อนข้างสับสนกับพฤติกรรมต่อไปนี้ ifelse(TRUE,c(1,2),c(3,4)) # [1] 1 ifelse(FALSE,c(1,2),c(3,4)) # [1] 3 นี่เป็นตัวเลือกการออกแบบที่เหนือการจ่ายเงินของฉันหรือไม่
118 r  if-statement  r-faq 

2
แปลง UNIX epoch เป็นวัตถุ Date
ฉันกำลังวางแผนและทำการคำนวณเกี่ยวกับอนุกรมเวลาที่กระจายสม่ำเสมอ ปัจจุบันการประทับเวลาถูกจัดเก็บเป็นจำนวนเต็มแทนจำนวนวินาทีนับตั้งแต่ยุค UNIX (เช่น1352068320) แต่Dateวัตถุดูเหมือนจะเหมาะสมกว่าสำหรับการลงจุด ฉันจะทำการแปลงได้อย่างไร? ฉันได้อ่าน?Date, ?as.Dateและ??epochแต่ดูเหมือนจะไม่ได้รับข้อมูลว่า
118 r  time  r-faq 

11
จะอ่านข้อมูลได้อย่างไรเมื่อตัวเลขบางตัวมีเครื่องหมายจุลภาคเป็นตัวคั่นหลักพัน
ฉันมีไฟล์ csv ที่ค่าตัวเลขบางส่วนแสดงเป็นสตริงที่มีเครื่องหมายจุลภาคเป็นตัวคั่นหลักพันเช่น"1,513"แทนที่จะเป็น1513ไฟล์. วิธีที่ง่ายที่สุดในการอ่านข้อมูลเป็น R คืออะไร? ฉันสามารถใช้ได้read.csv(..., colClasses="character")แต่ฉันต้องตัดเครื่องหมายจุลภาคออกจากองค์ประกอบที่เกี่ยวข้องก่อนที่จะแปลงคอลัมน์เหล่านั้นเป็นตัวเลขและฉันไม่พบวิธีที่เป็นระเบียบในการทำเช่นนั้น
117 r  csv  r-faq 

7
การจัดกำหนดการสคริปต์ R
ฉันได้เขียนสคริปต์ R ที่ดึงข้อมูลบางส่วนจากฐานข้อมูลดำเนินการหลายอย่างกับมันและโพสต์ผลลัพธ์ไปยังฐานข้อมูลใหม่ ฉันต้องการให้สคริปต์นี้ทำงานทุกวันในเวลาที่กำหนด แต่ฉันไม่พบวิธีใดที่จะทำให้สิ่งนี้ได้ผล ใครสามารถแนะนำแหล่งข้อมูลที่ฉันสามารถดูเพื่อแก้ปัญหานี้ได้ ฉันกำลังเรียกใช้สคริปต์นี้บนเครื่อง Windows
113 r  windows  schedule  r-faq 

7
ค้นหาแถวที่ซ้ำกันทั้งหมดรวมถึง "องค์ประกอบที่มีตัวห้อยเล็กกว่า"
R duplicatedส่งคืนเวกเตอร์ที่แสดงว่าแต่ละองค์ประกอบของเวกเตอร์หรือเฟรมข้อมูลซ้ำกันขององค์ประกอบที่มีตัวห้อยเล็กกว่า ดังนั้นหากแถวที่ 3, 4 และ 5 ของเฟรมข้อมูล 5 แถวเหมือนกันduplicatedจะให้เวกเตอร์ FALSE, FALSE, FALSE, TRUE, TRUE แต่ในกรณีนี้ฉันอยากจะได้จริงๆ FALSE, FALSE, TRUE, TRUE, TRUE นั่นคือฉันต้องการทราบว่าแถวนั้นซ้ำกันหรือไม่โดยแถวที่มีตัวห้อยใหญ่กว่าด้วย
112 r  duplicates  r-faq 

3
การควบคุมจำนวนหลักทศนิยมในเอาต์พุตการพิมพ์ใน R
มีตัวเลือกใน R เพื่อควบคุมการแสดงผลหลัก ตัวอย่างเช่น: options(digits=10) ควรให้ผลการคำนวณเป็นตัวเลข 10 หลักจนจบเซสชัน R ในไฟล์วิธีใช้ของ R นิยามสำหรับพารามิเตอร์หลักมีดังนี้: หลัก: ควบคุมจำนวนหลักที่จะพิมพ์เมื่อพิมพ์ค่าตัวเลข เป็นการเสนอแนะเท่านั้น ค่าที่ถูกต้องคือ1 ... 22โดยมีค่าเริ่มต้น7 ดังนั้นจึงบอกว่านี่เป็นคำแนะนำเท่านั้น จะเป็นอย่างไรหากฉันต้องการแสดงตัวเลข 10 หลักเสมอไม่มากหรือน้อย? คำถามที่สองของฉันคือถ้าฉันต้องการแสดงตัวเลขมากกว่า 22 หลักเช่นเพื่อการคำนวณที่แม่นยำยิ่งขึ้นเช่น 100 หลัก? เป็นไปได้ไหมกับฐาน R หรือฉันต้องการแพ็คเกจ / ฟังก์ชั่นเพิ่มเติมสำหรับสิ่งนั้น? แก้ไข:ขอบคุณข้อเสนอแนะของ jmoy ฉันพยายามsprintf("%.100f",pi)และให้มัน [1] "3.1415926535897931159979634685441851615905761718750000000000000000000000000000000000000000000000000000" ซึ่งมีทศนิยม 48 ตำแหน่ง นี่คือขีด จำกัด สูงสุดที่ R สามารถจัดการได้หรือไม่?

5
ข้อผิดพลาดใน <my code>: ออบเจ็กต์ประเภท 'closed' ไม่สามารถเซ็ตย่อยได้
ในที่สุดฉันก็สามารถหารหัสสำหรับการขูดของฉันได้ ดูเหมือนว่าจะทำงานได้ดีและทันใดนั้นเมื่อฉันวิ่งอีกครั้งฉันได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้: Error in url[i] = paste("http://en.wikipedia.org/wiki/", gsub(" ", "_", : object of type 'closure' is not subsettable ฉันไม่แน่ใจว่าทำไมฉันไม่เปลี่ยนอะไรเลยในรหัส กรุณาแนะนำ. library(XML) library(plyr) names &lt;- c("George Clooney", "Kevin Costner", "George Bush", "Amar Shanghavi") for(i in 1:length(names)) { url[i] = paste('http://en.wikipedia.org/wiki/', gsub(" ","_", names[i]) , sep="") # some parsing code }
110 r  r-faq 

6
วิธีใช้ตัวแปรเพื่อระบุชื่อคอลัมน์ใน ggplot
ฉันมีคำสั่ง ggplot ggplot( rates.by.groups, aes(x=name, y=rate, colour=majr, group=majr) ) ภายในฟังก์ชัน แต่ฉันต้องการใช้พารามิเตอร์ของฟังก์ชันเพื่อเลือกคอลัมน์เพื่อใช้เป็นสีและกลุ่ม คือฉันต้องการอะไรแบบนี้ f &lt;- function( column ) { ... ggplot( rates.by.groups, aes(x=name, y=rate, colour= ??? , group=??? ) ) } เพื่อให้คอลัมน์ที่ใช้ใน ggplot ถูกกำหนดโดยพารามิเตอร์ เช่นสำหรับ f ("majr") เราได้รับผลของ ggplot( rates.by.groups, aes(x=name, y=rate, colour=majr, group=majr) ) แต่สำหรับ f ("เพศ") เราได้รับผลของ ggplot( rates.by.groups, …
110 r  ggplot2  r-faq 

6
แยกสตริงที่คั่นด้วยจุลภาคในคอลัมน์เป็นแถวแยกกัน
ฉันมีกรอบข้อมูลดังนี้: data.frame(director = c("Aaron Blaise,Bob Walker", "Akira Kurosawa", "Alan J. Pakula", "Alan Parker", "Alejandro Amenabar", "Alejandro Gonzalez Inarritu", "Alejandro Gonzalez Inarritu,Benicio Del Toro", "Alejandro González Iñárritu", "Alex Proyas", "Alexander Hall", "Alfonso Cuaron", "Alfred Hitchcock", "Anatole Litvak", "Andrew Adamson,Marilyn Fox", "Andrew Dominik", "Andrew Stanton", "Andrew Stanton,Lee Unkrich", "Angelina Jolie,John Stevenson", "Anne …
109 r  string  split  r-faq 

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