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

R เป็นภาษาการเขียนโปรแกรมแบบโอเพนซอร์สและสภาพแวดล้อมซอฟต์แวร์สำหรับการคำนวณทางสถิติชีวสารสนเทศศาสตร์การสร้างภาพและการคำนวณทั่วไป โปรดให้ตัวอย่างที่น้อยที่สุดและทำซ้ำได้พร้อมกับผลลัพธ์ที่ต้องการ ใช้ `dput ()` สำหรับข้อมูลและระบุแพ็คเกจที่ไม่ใช่ฐานทั้งหมดด้วยการเรียก `library ()` อย่าฝังรูปภาพสำหรับข้อมูลหรือรหัสให้ใช้บล็อกรหัสเยื้องแทน สำหรับคำถามที่เกี่ยวข้องกับสถิติให้ใช้ https://stats.stackexchange.com

8
ขยายปัจจัย R โดยอัตโนมัติไปยังชุดของตัวแปรตัวบ่งชี้ 1/0 สำหรับทุกระดับปัจจัย
ฉันมีกรอบข้อมูล R ที่มีปัจจัยที่ฉันต้องการ "ขยาย" เพื่อให้แต่ละระดับปัจจัยมีคอลัมน์ที่เกี่ยวข้องในกรอบข้อมูลใหม่ซึ่งมีตัวบ่งชี้ 1/0 เช่นสมมติว่าฉันมี: df.original <-data.frame(eggs = c("foo", "foo", "bar", "bar"), ham = c(1,2,3,4)) ฉันต้องการ: df.desired <- data.frame(foo = c(1,1,0,0), bar=c(0,0,1,1), ham=c(1,2,3,4)) เนื่องจากสำหรับการวิเคราะห์บางอย่างที่คุณต้องมีกรอบข้อมูลที่เป็นตัวเลขทั้งหมด (เช่นการวิเคราะห์องค์ประกอบหลัก) ฉันคิดว่าฟีเจอร์นี้อาจมีอยู่ในตัวการเขียนฟังก์ชันเพื่อทำสิ่งนี้ไม่ควรยากเกินไป แต่ฉันสามารถมองเห็นได้ ความท้าทายเกี่ยวกับชื่อคอลัมน์และหากมีบางอย่างอยู่แล้วฉันควรใช้สิ่งนั้น
108 r 

8
การสร้าง R dataframe ทีละแถว
ฉันต้องการสร้างดาต้าเฟรมทีละแถวใน R ฉันได้ทำการค้นหาแล้วและสิ่งที่ฉันคิดขึ้นมาคือคำแนะนำในการสร้างรายการว่างเก็บสเกลาร์ดัชนีรายการจากนั้นทุกครั้งที่เพิ่มลงในรายการ ดาต้าเฟรมแถวเดียวและเลื่อนดัชนีรายการทีละรายการ สุดท้ายdo.call(rbind,)ในรายการ ในขณะที่ใช้งานได้ดูเหมือนจะยุ่งยากมาก ไม่มีวิธีที่ง่ายกว่าในการบรรลุเป้าหมายเดียวกันหรือไม่? เห็นได้ชัดว่าฉันอ้างถึงกรณีที่ฉันไม่สามารถใช้applyฟังก์ชันบางอย่างได้และจำเป็นต้องสร้างแถวดาต้าเฟรมทีละแถวอย่างชัดเจน อย่างน้อยก็มีวิธีที่จะpushเข้าสู่จุดสิ้นสุดของรายการแทนที่จะติดตามดัชนีล่าสุดที่ใช้อย่างชัดเจนหรือไม่?
108 list  r  dataframe 

2
เพิ่มระยะห่างระหว่างข้อความและหัวเรื่องบนแกน y
หัวเรื่องแกน y ปรากฏใกล้กับข้อความแกนมากเกินไป ggplot(mpg, aes(cty, hwy)) + geom_point() ฉันได้ลองเปลี่ยนค่าของพารามิเตอร์หลายตัวแล้วtheme()แต่ดูเหมือนจะช่วยไม่ได้
108 r  layout  plot  ggplot2 

4
การไล่ระดับของ n สีตั้งแต่สี 1 และสี 2
ฉันมักจะทำงานกับการggplot2ไล่ระดับสีที่ดี ( คลิกที่นี่เพื่อดูตัวอย่าง ) ฉันมีความต้องการที่จะทำงานในฐานและฉันคิดว่าscalesสามารถใช้ที่นั่นเพื่อสร้างการไล่ระดับสีได้เช่นกัน แต่ฉันไม่ได้ตั้งใจอย่างมาก เป้าหมายพื้นฐานคือสร้างจานสี n สีที่มีตั้งแต่สี x ไปจนถึงสี y การแก้ปัญหาจำเป็นต้องทำงานในฐานแม้ว่า นี่เป็นจุดเริ่มต้น แต่ไม่มีที่ให้ใส่ n scale_colour_gradientn(colours=c("red", "blue")) ฉันตระหนักดีถึง: brewer.pal(8, "Spectral") จากRColorBrewer. ฉันกำลังมองหาวิธีการเพิ่มเติมที่คล้ายกับวิธีggplot2จัดการกับการไล่ระดับสีที่บอกว่าฉันมีสองสีนี้และฉันต้องการ 15 สีไปพร้อมกัน ฉันจะทำเช่นนั้นได้อย่างไร?
108 r  gradient 

11
แยกตัวเลขจากเวกเตอร์ของสตริง
ฉันมีสตริงแบบนี้: years<-c("20 years old", "1 years old") ฉันต้องการ grep เฉพาะตัวเลขจากเวกเตอร์นี้ ผลลัพธ์ที่คาดหวังคือเวกเตอร์: c(20, 1) ฉันจะทำสิ่งนี้ได้อย่างไร?
108 regex  r 

1
จะอัพเกรด R ใน Ubuntu ได้อย่างไร? [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Stack Overflow ปิดให้บริการใน8 ปีที่ผ่านมา ปรับปรุงคำถามนี้ ฉันติดตั้ง R 2.12.1 ในอูบุนตูของฉันแล้วและฉันต้องการอัปเกรดเป็นเวอร์ชันล่าสุด 2.15 จะทำได้อย่างไร ขอบคุณ
107 r  ubuntu 

10
จะวาดพล็อตเปล่าได้อย่างไร?
ฉันต้องการสร้างพล็อตที่ว่างเปล่า นี่เป็นสิ่งที่ดีที่สุดที่ฉันสามารถทำได้ plot(0, xaxt = 'n', yaxt = 'n', bty = 'n', pch = '', ylab = '', xlab = '') วิธีแก้ปัญหาที่ง่ายกว่านี้หรือไม่? PS: ว่างเปล่าไม่มีแกน ฯลฯ
107 r  ggplot2  plot 

5
ส่งออกกราฟเป็นไฟล์. eps ด้วย R
ฉันจะส่งออกกราฟเป็นไฟล์รูปแบบ. eps ได้อย่างไร โดยปกติฉันจะส่งออกกราฟเป็นไฟล์. pdf (โดยใช้ฟังก์ชัน 'pdf') และทำงานได้ดีทีเดียว อย่างไรก็ตามตอนนี้ฉันต้องส่งออกเป็นไฟล์. eps
107 r  graph  eps 

4
เปลี่ยนกรอบข้อมูล
ฉันต้องการเปลี่ยนกรอบข้อมูลขนาดใหญ่ดังนั้นฉันจึงใช้: df.aree <- t(df.aree) df.aree <- as.data.frame(df.aree) นี่คือสิ่งที่ฉันได้รับ: df.aree[c(1:5),c(1:5)] 10428 10760 12148 11865 name M231T3 M961T5 M960T6 M231T19 GS04.A 5.847557e+03 0.000000e+00 3.165891e+04 2.119232e+04 GS16.A 5.248690e+04 4.047780e+03 3.763850e+04 1.187454e+04 GS20.A 5.370910e+03 9.518396e+03 3.552036e+04 1.497956e+04 GS40.A 3.640794e+03 1.084391e+04 4.651735e+04 4.120606e+04 ปัญหาของฉันคือชื่อคอลัมน์ใหม่ (10428, 10760, 12148, 11865) ที่ฉันต้องกำจัดเพราะฉันต้องใช้แถวแรกเป็นชื่อคอลัมน์ ฉันลองใช้col.names()ฟังก์ชันแล้วแต่ไม่ได้รับสิ่งที่ต้องการ คุณมีข้อเสนอแนะหรือไม่? แก้ไข ขอบคุณสำหรับคำแนะนำ !!! ใช้มันฉันได้รับ: …
107 r  dataframe 

5
วิธีลบอักขระ n ตัวสุดท้ายออกจากทุกองค์ประกอบในเวกเตอร์ R
ฉันใหม่มากสำหรับ R และฉันไม่พบตัวอย่างง่ายๆทางออนไลน์เกี่ยวกับวิธีการลบอักขระ n ตัวสุดท้ายออกจากทุกองค์ประกอบของเวกเตอร์ (อาร์เรย์?) ฉันมาจากพื้นหลัง Java ดังนั้นสิ่งที่ฉันต้องการจะทำคือทำซ้ำทุกองค์ประกอบa$dataและลบอักขระ 3 ตัวสุดท้ายออกจากทุกองค์ประกอบ คุณจะไปได้อย่างไร?
107 r  string 

2
การใช้งานคำสั่ง switch ()
ฉันสับสนเล็กน้อยเกี่ยวกับคำสั่ง switch ใน R เพียงแค่ googling ฟังก์ชั่นฉันได้รับตัวอย่างดังนี้: การใช้สวิตช์ทั่วไปคือการแยกสาขาตามค่าอักขระของอาร์กิวเมนต์ตัวใดตัวหนึ่งของฟังก์ชัน > centre <- function(x, type) { + switch(type, + mean = mean(x), + median = median(x), + trimmed = mean(x, trim = .1)) + } > x <- rcauchy(10) > centre(x, "mean") [1] 0.8760325 > centre(x, "median") [1] 0.5360891 > centre(x, "trimmed") …

9
ค่าเฉลี่ยทางเรขาคณิต: มีในตัวหรือไม่?
ฉันพยายามหาค่าเฉลี่ยเรขาคณิตในตัว แต่ทำไม่ได้ (เห็นได้ชัดว่าบิวท์อินจะไม่ช่วยฉันตลอดเวลาในขณะที่ทำงานในเชลล์และฉันไม่สงสัยว่ามีความแม่นยำแตกต่างกันสำหรับสคริปต์ฉันพยายามใช้บิวท์อินให้บ่อยที่สุดโดยที่ (สะสม) การเพิ่มประสิทธิภาพมักจะเห็นได้ชัดเจน ในกรณีที่ไม่มี (ซึ่งฉันสงสัยว่าเป็นเช่นนั้น) นี่เป็นของฉัน gm_mean = function(a){prod(a)^(1/length(a))}

12
ตรวจสอบว่าตัวเลขเป็นจำนวนเต็มหรือไม่
ฉันประหลาดใจที่ได้รู้ว่า R ไม่ได้มาพร้อมกับฟังก์ชันที่มีประโยชน์ในการตรวจสอบว่าตัวเลขนั้นเป็นจำนวนเต็มหรือไม่ is.integer(66) # FALSE ไฟล์ความช่วยเหลือเตือน : is.integer(x)ไม่ได้ทดสอบว่าx มีตัวเลขจำนวนเต็มหรือไม่! สำหรับสิ่งนั้นให้ใช้roundดังในฟังก์ชัน is.wholenumber(x)ในตัวอย่าง ตัวอย่างมีฟังก์ชันที่กำหนดเองนี้เป็น "วิธีแก้ปัญหาชั่วคราว" is.wholenumber <- function(x, tol = .Machine$double.eps^0.5) abs(x - round(x)) < tol is.wholenumber(1) # is TRUE ถ้าฉันจะต้องเขียนฟังก์ชันเพื่อตรวจสอบจำนวนเต็มโดยสมมติว่าฉันไม่ได้อ่านความคิดเห็นด้านบนฉันจะเขียนฟังก์ชันที่จะไปตามเส้นของ check.integer <- function(x) { x == round(x) } แนวทางของฉันจะล้มเหลวที่ไหน คุณจะทำอะไรได้บ้างถ้าคุณอยู่ในรองเท้าสมมุติของฉัน?
106 r  integer  rounding 

2
ความสับสนระหว่างระดับปัจจัยและป้ายกำกับปัจจัย
ดูเหมือนจะมีความแตกต่างระหว่างระดับและป้ายกำกับของปัจจัยใน R จนถึงตอนนี้ฉันคิดเสมอว่าระดับเป็นชื่อ 'จริง' ของระดับปัจจัยและป้ายกำกับเป็นชื่อที่ใช้สำหรับเอาต์พุต (เช่นตารางและพล็อต) . เห็นได้ชัดว่านี่ไม่ใช่กรณีดังตัวอย่างต่อไปนี้: df <- data.frame(v=c(1,2,3),f=c('a','b','c')) str(df) 'data.frame': 3 obs. of 2 variables: $ v: num 1 2 3 $ f: Factor w/ 3 levels "a","b","c": 1 2 3 df$f <- factor(df$f, levels=c('a','b','c'), labels=c('Treatment A: XYZ','Treatment B: YZX','Treatment C: ZYX')) levels(df$f) [1] "Treatment A: XYZ" …
106 r  r-factor  r-faq 

1
จำกัด ggplot2 แกนโดยไม่ต้องลบข้อมูล (นอกขีด จำกัด ): ซูม
หากคุณระบุขีด จำกัด แกนใน ggplot จุดรอบนอกจะถูกลบออก วิธีนี้ใช้ได้ดีสำหรับจุด แต่คุณอาจต้องการพล็อตเส้นที่ตัดกับช่วงที่ระบุ แต่ ggplot rangeหรือxlim/ylimวิธีการจะลบสิ่งเหล่านี้ มีวิธีอื่นในการระบุช่วงแกนของพล็อตโดยไม่ต้องลบข้อมูลภายนอกหรือไม่? เช่น require(ggplot2) d = data.frame(x=c(1,4,7,2,9,7), y=c(2,5,4,10,5,3), grp=c('a','a','b','b','c','c')) ggplot(d, aes(x, y, group=grp)) + geom_line() ggplot(d, aes(x, y, group=grp)) + geom_line() + scale_y_continuous(limits=c(0,7)) ggplot(d, aes(x, y, group=grp)) + geom_line() + ylim(0,7)
106 r  ggplot2  zoom  limits 

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