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

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

5
การพล็อตตัวแปรสองตัวเป็นบรรทัดโดยใช้ ggplot2 บนกราฟเดียวกัน
เป็นคำถามที่ค่อนข้างใหม่ แต่บอกว่าฉันมีข้อมูลเช่นนี้: test_data <- data.frame( var0 = 100 + c(0, cumsum(runif(49, -20, 20))), var1 = 150 + c(0, cumsum(runif(49, -10, 10))), date = seq(as.Date("2002-01-01"), by="1 month", length.out=100) ) ฉันจะพล็อตทั้งอนุกรมเวลาvar0และvar1กราฟเดียวกันdateโดยใช้แกน x ได้ggplot2อย่างไร? คะแนนโบนัสหากคุณทำvar0และvar1สีที่แตกต่างและสามารถรวมตำนาน! ฉันแน่ใจว่ามันง่ายมาก แต่ฉันไม่สามารถหาตัวอย่างได้
305 r  ggplot2  graph  time-series  r-faq 

11
จะบันทึกพล็อตเป็นอิมเมจบนดิสก์ได้อย่างไร?
ฉันวางแผนการถดถอยเชิงเส้นอย่างง่ายโดยใช้อาร์ฉันต้องการบันทึกภาพนั้นเป็น PNG หรือ JPEG เป็นไปได้ไหมที่จะทำโดยอัตโนมัติ? (ผ่านรหัส) มีคำถามที่แตกต่างกันสองข้อข้อแรกฉันดูพล็อตบนหน้าจอของฉันแล้วและฉันต้องการบันทึกตามที่เป็นอยู่ ประการที่สองฉันยังไม่ได้สร้างพล็อต แต่ฉันต้องการบันทึกลงดิสก์โดยตรงเมื่อฉันเรียกใช้รหัสการพล็อตของฉัน
304 r  plot  ggplot2  lattice  r-faq 

13
สั่งซื้อแท่งกราฟแท่ง ggplot2
ฉันกำลังพยายามสร้างกราฟแท่งที่แถบที่ใหญ่ที่สุดใกล้กับแกน y และแถบที่สั้นที่สุดจะไกลที่สุด นี่คือตารางที่ฉันมี Name Position 1 James Goalkeeper 2 Frank Goalkeeper 3 Jean Defense 4 Steve Defense 5 John Defense 6 Tim Striker ดังนั้นฉันจึงพยายามสร้างกราฟแท่งที่จะแสดงจำนวนผู้เล่นตามตำแหน่ง p <- ggplot(theTable, aes(x = Position)) + geom_bar(binwidth = 1) แต่กราฟจะแสดงแถบผู้รักษาประตูก่อนจากนั้นจะเป็นการป้องกันและในที่สุดก็เป็นกองหน้า ฉันต้องการให้กราฟสั่งให้แถบป้องกันอยู่ใกล้กับแกน y, ผู้รักษาประตูคนหนึ่งและในที่สุดก็เป็นกองหน้า ขอบคุณ
301 r  ggplot2  r-faq 

6
ประเมินการแสดงออกที่กำหนดให้เป็นสตริง
ฉันอยากรู้ว่า R สามารถใช้eval()ฟังก์ชั่นเพื่อทำการคำนวณโดยสตริงหรือไม่ นี่เป็นกรณีทั่วไป: eval("5+5") อย่างไรก็ตามแทนที่จะเป็น 10 ฉันจะได้รับ: [1] "5+5" ทางออกใด ๆ
283 r  eval  r-faq 

9
ทดสอบว่าอักขระอยู่ในสตริงหรือไม่
ฉันพยายามที่จะตรวจสอบว่าสตริงเป็นส่วนย่อยของสตริงอื่น ตัวอย่างเช่น: chars <- "test" value <- "es" ฉันต้องการส่งคืน TRUE หาก "value" ปรากฏเป็นส่วนหนึ่งของสตริง "chars" ในสถานการณ์ต่อไปนี้ฉันต้องการกลับเท็จ: chars <- "test" value <- "et"
279 r  regex  string  r-faq 


6
เชื่อมต่อเวกเตอร์ของสตริง / ตัวอักษร
หากฉันมีเวกเตอร์ประเภทอักขระฉันจะเชื่อมค่าเป็นสตริงได้อย่างไร นี่คือวิธีที่ฉันจะทำกับวาง () : sdata = c('a', 'b', 'c') paste(sdata[1], sdata[2], sdata[3], sep ='') "abc"ยอมให้ แต่แน่นอนว่าใช้งานได้ถ้าฉันรู้ระยะเวลาของsdataล่วงหน้า
273 r  string  r-faq 

12
การจัดรูปแบบตำแหน่งทศนิยมใน R
ฉันมีตัวเลขตัวอย่างเช่น 1.128347132904321674821 ที่ฉันต้องการแสดงเป็นทศนิยมสองตำแหน่งเท่านั้นเมื่อส่งออกไปยังหน้าจอ (หรือเขียนลงไฟล์) เราจะทำอย่างนั้นได้อย่างไร? x <- 1.128347132904321674821 แก้ไข: การใช้: options(digits=2) ได้รับการแนะนำว่าเป็นคำตอบที่เป็นไปได้ มีวิธีการระบุสิ่งนี้ภายในสคริปต์สำหรับใช้ครั้งเดียวหรือไม่? เมื่อฉันเพิ่มลงในสคริปต์ของฉันดูเหมือนว่าจะไม่ได้ทำอะไรที่แตกต่างกันและฉันไม่สนใจที่จะพิมพ์อีกครั้งเพื่อจัดรูปแบบแต่ละหมายเลข (ฉันกำลังทำรายงานขนาดใหญ่โดยอัตโนมัติ) - คำตอบ: รอบ (x, ตัวเลข = 2)
264 r  formatting  rounding  r-faq 

11
วิธีการปรับรูปแบบข้อมูลจากรูปแบบยาวเป็นแบบกว้าง
ฉันมีปัญหาในการจัดเรียงเฟรมข้อมูลต่อไปนี้: set.seed(45) dat1 <- data.frame( name = rep(c("firstName", "secondName"), each=4), numbers = rep(1:4, 2), value = rnorm(8) ) dat1 name numbers value 1 firstName 1 0.3407997 2 firstName 2 -0.7033403 3 firstName 3 -0.3795377 4 firstName 4 -0.7460474 5 secondName 1 -0.8981073 6 secondName 2 -0.3347941 7 secondName 3 -0.5013782 …
263 r  reshape  r-faq 

9
ผสานหลาย data.frames พร้อมกันในรายการ
ฉันมีรายการของ data.frames มากมายที่ฉันต้องการผสาน ปัญหาที่นี่คือแต่ละ data.frame แตกต่างกันในแง่ของจำนวนแถวและคอลัมน์ แต่พวกเขาทั้งหมดร่วมตัวแปรสำคัญ (ที่ฉันได้เรียก"var1"และ"var2"ในรหัสด้านล่าง) หาก data.frames เหมือนกันในแง่ของคอลัมน์ฉันสามารถทำได้rbindซึ่ง rbind.fill ของplyrจะทำงานได้ แต่นั่นไม่ใช่กรณีของข้อมูลเหล่านี้ เนื่องจากmergeคำสั่งใช้งานได้กับ data.frames เพียง 2 ตัวเท่านั้นฉันจึงหันไปหาแนวคิดทางอินเทอร์เน็ต ฉันได้หนึ่งจากที่นี่ซึ่งทำงานอย่างสมบูรณ์ใน R 2.7.2 ซึ่งเป็นสิ่งที่ฉันมีในเวลา: merge.rec <- function(.list, ...){ if(length(.list)==1) return(.list[[1]]) Recall(c(list(merge(.list[[1]], .list[[2]], ...)), .list[-(1:2)]), ...) } และฉันจะเรียกฟังก์ชั่นเช่นนี้: df <- merge.rec(my.list, by.x = c("var1", "var2"), by.y = c("var1", "var2"), all = T, …
258 r  list  merge  dataframe  r-faq 

26
กำหนดเส้นทางของสคริปต์การดำเนินการ
ฉันมีสคริปต์ที่เรียกfoo.Rว่ารวมสคริปต์อื่นother.Rซึ่งอยู่ในไดเรกทอรีเดียวกัน: #!/usr/bin/env Rscript message("Hello") source("other.R") แต่ฉันต้องการRพบว่าother.Rไม่ว่าไดเรกทอรีทำงานปัจจุบัน กล่าวอีกนัยหนึ่งfoo.Rจำเป็นต้องรู้เส้นทางของตัวเอง ฉันจะทำสิ่งนั้นได้อย่างไร
255 r  file  path  rscript  r-faq 

15
แยกคอลัมน์สตริงข้อมูลเฟรมออกเป็นหลายคอลัมน์
ฉันต้องการใช้ข้อมูลของแบบฟอร์ม before = data.frame(attr = c(1,30,4,6), type=c('foo_and_bar','foo_and_bar_2')) attr type 1 1 foo_and_bar 2 30 foo_and_bar_2 3 4 foo_and_bar 4 6 foo_and_bar_2 และใช้split()ในคอลัมน์ " type" จากด้านบนเพื่อรับสิ่งนี้: attr type_1 type_2 1 1 foo bar 2 30 foo bar_2 3 4 foo bar 4 6 foo bar_2 ฉันคิดว่ามีสิ่งที่ซับซ้อนอย่างไม่น่าเชื่อที่เกี่ยวข้องกับรูปแบบการapplyทำงานบางอย่างแต่ฉันหายไปตั้งแต่นั้น มันดูซับซ้อนเกินไปที่จะเป็นวิธีที่ดีที่สุด ฉันสามารถใช้strsplitด้านล่าง แต่แล้วไม่ชัดเจนว่าจะกลับไปที่ 2 คอลัมน์ในกรอบข้อมูลได้อย่างไร …
246 r  string  dataframe  split  r-faq 

13
รวมสองเฟรมข้อมูลตามแถว (rbind) เมื่อมีชุดคอลัมน์ที่แตกต่างกัน
เป็นไปได้หรือไม่ที่จะผูกแถวข้อมูลสองเฟรมที่ไม่มีชุดคอลัมน์เดียวกัน ฉันหวังว่าจะรักษาคอลัมน์ที่ไม่ตรงกันหลังจากการผูกไว้
232 r  dataframe  r-faq 

15
ggplot ที่มี 2 แกน y ในแต่ละด้านและระดับที่แตกต่างกัน
ฉันต้องพล็อตแผนภูมิแท่งที่แสดงจำนวนและแผนภูมิเส้นที่แสดงอัตราทั้งหมดในหนึ่งแผนภูมิฉันสามารถทำทั้งสองอย่างแยกจากกัน แต่เมื่อฉันรวมเข้าด้วยกันฉันจะปรับสเกลของเลเยอร์แรก (เช่นgeom_bar) ทับซ้อนกันเป็นวินาที ชั้น (เช่นgeom_line) ฉันสามารถเลื่อนแกนของgeom_lineไปทางขวาได้ไหม?
231 r  ggplot2  r-faq 

9
เพิ่มสมการเส้นถดถอยและ R ^ 2 บนกราฟ
ฉันสงสัยว่าจะเพิ่มเส้นสมการถดถอยและ R ^ 2 ggplotบน รหัสของฉันคือ: library(ggplot2) df <- data.frame(x = c(1:100)) df$y <- 2 + 3 * df$x + rnorm(100, sd = 40) p <- ggplot(data = df, aes(x = x, y = y)) + geom_smooth(method = "lm", se=FALSE, color="black", formula = y ~ x) + geom_point() p ความช่วยเหลือใด …

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