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

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

10
ฉันจะดูซอร์สโค้ดของฟังก์ชั่นได้อย่างไร
ฉันต้องการดูซอร์สโค้ดสำหรับฟังก์ชั่นเพื่อดูว่ามันทำงานอย่างไร ฉันรู้ว่าฉันสามารถพิมพ์ฟังก์ชั่นได้โดยพิมพ์ชื่อที่พรอมต์: > t function (x) UseMethod("t") <bytecode: 0x2332948> <environment: namespace:base> ในกรณีนี้UseMethod("t")หมายความว่าอย่างไร ฉันจะค้นหาซอร์สโค้ดที่ใช้งานจริงได้t(1:10)อย่างไรตัวอย่างเช่น: มีความแตกต่างระหว่างเมื่อฉันเห็นUseMethodและเมื่อฉันเห็นstandardGenericและshowMethodsเช่นเดียวกับwith? > with standardGeneric for "with" defined from package "base" function (data, expr, ...) standardGeneric("with") <bytecode: 0x102fb3fc0> <environment: 0x102fab988> Methods may be defined for arguments: data Use showMethods("with") for currently available ones. ในกรณีอื่น ๆ ฉันเห็นว่ามีการเรียกใช้ฟังก์ชัน R แต่ฉันไม่สามารถหารหัสแหล่งที่มาสำหรับฟังก์ชั่นเหล่านั้นได้ …
551 r  function  r-faq 

14
วางระดับตัวคูณในเฟรมข้อมูลที่ถูกเซตย่อย
factorฉันมีกรอบข้อมูลที่มี เมื่อฉันสร้างเซตย่อยของ dataframe นี้โดยใช้subsetหรือฟังก์ชั่นการทำดัชนีอื่นเฟรมข้อมูลใหม่จะถูกสร้างขึ้น อย่างไรก็ตามfactorตัวแปรยังคงรักษาระดับเดิมทั้งหมดแม้เมื่อ / หากไม่มีอยู่ใน dataframe ใหม่ สิ่งนี้ทำให้เกิดปัญหาเมื่อทำการพล็อตแบบเหลี่ยมเพชรพลอยหรือใช้ฟังก์ชั่นที่ขึ้นอยู่กับระดับปัจจัย วิธีรวบรัดที่สุดในการลบระดับออกจากปัจจัยในดาต้าเฟรมใหม่คืออะไร นี่คือตัวอย่าง: df <- data.frame(letters=letters[1:5], numbers=seq(1:5)) levels(df$letters) ## [1] "a" "b" "c" "d" "e" subdf <- subset(df, numbers <= 3) ## letters numbers ## 1 a 1 ## 2 b 2 ## 3 c 3 # all levels are still …
543 r  dataframe  r-factor  r-faq 

11
วิธีการยกเลิกการโหลดแพคเกจโดยไม่ต้องรีสตาร์ท R
ฉันต้องการยกเลิกการโหลดแพคเกจโดยไม่ต้องรีสตาร์ท R (ส่วนใหญ่เป็นเพราะการรีสตาร์ท R เนื่องจากฉันลองใช้แพ็คเกจที่ขัดแย้งกันต่าง ๆ กำลังทำให้หงุดหงิด แต่สิ่งนี้สามารถใช้ในโปรแกรมเพื่อใช้ฟังก์ชันหนึ่งและอีกอัน - แม้ว่า namespace การอ้างอิงอาจเป็นแนวคิดที่ดีกว่าสำหรับการใช้งานนั้น) ?library ไม่แสดงตัวเลือกที่จะยกเลิกการโหลดแพ็คเกจ มีข้อเสนอแนะที่detachสามารถยกเลิกการโหลดแพคเกจ แต่ต่อไปนี้ทั้งสองล้มเหลว: detach(vegan) ข้อผิดพลาดในdetach(vegan): nameอาร์กิวเมนต์ไม่ถูกต้อง detach("vegan") ข้อผิดพลาดในdetach("vegan"): nameอาร์กิวเมนต์ไม่ถูกต้อง ดังนั้นฉันจะยกเลิกการโหลดแพ็คเกจได้อย่างไร
540 r  package  r-faq 

12
ความแตกต่างระหว่างวงเล็บ [] และวงเล็บคู่ [[]] สำหรับการเข้าถึงองค์ประกอบของรายการหรือ dataframe
R มีสองวิธีที่แตกต่างกันสำหรับการเข้าถึงองค์ประกอบของรายการหรือ data.frame ที่: และ[][[]] อะไรคือความแตกต่างระหว่างสองสิ่งในสถานการณ์ที่ฉันควรใช้สถานการณ์หนึ่งกับอีกสถานการณ์หนึ่ง
521 r  list  dataframe  extract  r-faq 


20
แปลงรายการเป็นกรอบข้อมูล
ฉันมีรายการข้อมูลที่ซ้อนกัน ความยาวของมันคือ 132 และแต่ละรายการเป็นรายการความยาว 20 มีวิธีที่รวดเร็วในการแปลงโครงสร้างนี้เป็นกรอบข้อมูลที่มี 132 แถวและ 20 คอลัมน์ของข้อมูลหรือไม่? นี่คือตัวอย่างข้อมูลบางส่วนที่จะทำงานกับ: l <- replicate( 132, list(sample(letters, 20)), simplify = FALSE )
513 r  list  dataframe 

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 

27
เทคนิคในการจัดการหน่วยความจำที่มีอยู่ในเซสชัน R
เทคนิคใดที่ผู้คนใช้เพื่อจัดการหน่วยความจำที่มีอยู่ของเซสชัน R แบบโต้ตอบ? ฉันใช้ฟังก์ชั่นด้านล่าง [อ้างอิงจากการโพสต์โดย Petr Pikal และ David Hinds ไปยังรายการ r-help ในปี 2004] เพื่อแสดงรายการ (และ / หรือเรียงลำดับ) วัตถุที่ใหญ่ที่สุดและบางครั้งrm()ก็เป็นไปได้ แต่ที่ผ่านมาโซลูชันที่มีประสิทธิภาพมากที่สุดคือ ... ทำงานภายใต้ Linux 64 บิตพร้อมหน่วยความจำที่เพียงพอ มีเทคนิคดีๆอื่น ๆ ที่ผู้คนต้องการแบ่งปันหรือไม่? กรุณาหนึ่งต่อโพสต์ # improved list of objects .ls.objects <- function (pos = 1, pattern, order.by, decreasing=FALSE, head=FALSE, n=5) { napply <- function(names, fn) …


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 

7
การวิเคราะห์กลุ่มใน R: พิจารณาจำนวนที่เหมาะสมของกลุ่ม
การเป็นมือใหม่ใน R ฉันไม่แน่ใจว่าจะเลือกกลุ่มที่ดีที่สุดเพื่อทำการวิเคราะห์ค่า k ได้อย่างไร หลังจากพล็อตชุดย่อยของข้อมูลด้านล่างแล้วมีกี่กลุ่มที่เหมาะสม ฉันจะทำการวิเคราะห์ dendro ของคลัสเตอร์ได้อย่างไร n = 1000 kk = 10 x1 = runif(kk) y1 = runif(kk) z1 = runif(kk) x4 = sample(x1,length(x1)) y4 = sample(y1,length(y1)) randObs <- function() { ix = sample( 1:length(x4), 1 ) iy = sample( 1:length(y4), 1 ) rx = rnorm( 1, …

12
จะค้นหาเวอร์ชั่นแพ็คเกจที่โหลดใน R ได้อย่างไร?
ฉันกำลังหาวิธีใช้กลุ่มมหาวิทยาลัยของฉัน มีการติดตั้ง R 2 เวอร์ชัน ความกว้างของระบบ R 2.11 (Debian 6.0) และ R 2.14.2 ในตำแหน่งที่ไม่ได้มาตรฐาน ฉันกำลังพยายามใช้ MPI ร่วมกับหิมะ รหัสที่ฉันพยายามเรียกใช้มีดังต่อไปนี้ library(snow) library(Rmpi) cl <- makeMPIcluster(mpi.universe.size()-1) stopCluster(cl) mpi.quit() มันทำงานได้โดยไม่มีปัญหาใน R 2.11 (ฉันเปิดสคริปต์ด้วยmpirun -H localhost,n1,n2,n3,n4 -n 1 R --slave -f code.R) ตอนนี้เมื่อฉันพยายามทำด้วย R 2.14.2 ฉันได้รับข้อความต่อไปนี้: Error: This is R 2.11.1, package 'snow' needs >= …
405 r  package  version 

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 


16
การเปลี่ยนชื่อคอลัมน์ของ data frame
ฉันมี data frame ชื่อ "newprice" (ดูด้านล่าง) และฉันต้องการเปลี่ยนชื่อคอลัมน์ในโปรแกรมของฉันใน R > newprice Chang. Chang. Chang. 1 100 36 136 2 120 -33 87 3 150 14 164 ในความเป็นจริงนี่คือสิ่งที่กำลังทำ: names(newprice)[1]<-paste("premium") names(newprice)[2]<-paste("change") names(newprice)[3]<-paste("newprice") ฉันไม่ได้ใส่สิ่งนี้ไว้ในลูปเพราะฉันต้องการให้แต่ละชื่อคอลัมน์แตกต่างกันอย่างที่คุณเห็น เมื่อฉันวางโปรแกรมลงในคอนโซล R นี่คือผลลัพธ์มันให้ฉัน: > names(newprice)[1]<-paste(“premium”) Error: unexpected input in "names(newprice)[1]<-paste(“" > names(newprice)[2]<-paste(“change”) Error: unexpected input in "names(newprice)[2]<-paste(“" > names(newprice)[3]<-paste(“newpremium”) Error: …
399 r  dataframe  rename 

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