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

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

1
ฉันจะใช้คำสั่ง `td 'จากแพ็คเกจ` tempdisagg` เพื่อแยกข้อมูลรายเดือนเป็นความถี่ข้อมูลรายวันได้อย่างไร
ฉันมีข้อมูลความถี่รายเดือนซึ่งฉันพยายามแยกเป็นข้อมูลความถี่รายวัน ดังนั้นฉันใช้tdคำสั่งจากtempdisaggแพคเกจใน R โดยใช้รหัสด้านล่าง: dat=ts(data[,2]) result=td(dat~1, conversion = "average", to = "day", method = "chow-lin-maxlog") จากนั้นฉันได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้: Error in td(dat ~ 1, conversion = "average", to = "day", method = "chow-lin-maxlog") : 'to' argument: unknown character string ข้อมูลที่ฉันใช้datมีดังนี้: > dput(head(dat)) c(82.47703009, 84.63094431, 70.00659987, 78.81135651, 74.749746,82.95638213) ดังนั้นแม้ว่าข้อมูลนี้datจะอยู่ในความถี่รายเดือน แต่จุดเริ่มต้นและจุดสิ้นสุดยังไม่สะท้อนถึงสิ่งนี้ อันที่จริงแล้ววันที่เริ่มต้นคือ 1/1997 และวันที่สิ้นสุดคือ 9/2019 …

5
Regex เพื่อลบศูนย์นำหน้าใน R ยกเว้นว่าอักขระตัวสุดท้าย (หรือเท่านั้น) เป็นศูนย์
gsub("(?<![0-9])0+", "", c("005", "0AB", "000", "0"), perl = TRUE) #> [1] "5" "AB" "" "" gsub("(^|[^0-9])0+", "\\1", c("005", "0AB", "000", "0"), perl = TRUE) #> [1] "5" "AB" "" "" นิพจน์ทั่วไปด้านบนมาจากเธรด SO นี้ซึ่งอธิบายวิธีลบศูนย์นำหน้าทั้งหมดออกจากสตริงใน R เนื่องจากการแสดงออกปกตินี้ทั้ง "000" และ "0" จะถูกเปลี่ยนเป็น "" แต่ฉันต้องการลบศูนย์นำหน้าทั้งหมดออกจากสตริงอักขระยกเว้นกรณีที่อักขระสุดท้ายปรากฏเป็นศูนย์หรืออักขระเพียงตัวเดียวคือศูนย์ "005" would become "5" "0AB" would become "AB" "000" …
9 r  regex  string  gsub  stringr 

1
ตัวอย่างของ RcppArmadillo () คลุมเครือหลังจากอัพเดต R
ฉันมักจะทำงานกับฟังก์ชั่น Rcpp สั้น ๆ ที่ใช้เป็นเมทริกซ์อินพุทที่แต่ละแถวมีความน่าจะเป็น K ซึ่งรวมถึง 1 จากนั้นฟังก์ชั่นสุ่มตัวอย่างสำหรับแต่ละแถวเป็นจำนวนเต็มระหว่าง 1 ถึง K ที่สอดคล้องกับความน่าจะเป็น นี่คือฟังก์ชั่น: // [[Rcpp::depends(RcppArmadillo)]] #include <RcppArmadilloExtensions/sample.h> using namespace Rcpp; // [[Rcpp::export]] IntegerVector sample_matrix(NumericMatrix x, IntegerVector choice_set) { int n = x.nrow(); IntegerVector result(n); for ( int i = 0; i < n; ++i ) { result[i] = RcppArmadillo::sample(choice_set, …
9 r  rcpp  rcpparmadillo 

1
วิธีที่เหมาะสมในการคืนพอยน์เตอร์ไปยังวัตถุ“ ใหม่” จากฟังก์ชั่น Rcpp
ลองพิจารณา 1) คลาสที่กำหนดเองที่มีการพิมพ์หน่วยความจำขนาดใหญ่และ 2) ฟังก์ชั่นระดับสูงสุดที่ดำเนินการประมวลผลล่วงหน้าจากนั้นสร้างและส่งคืนออบเจ็กต์ใหม่ของคลาสที่กำหนดเองของเรา เพื่อหลีกเลี่ยงการคัดลอกโดยไม่จำเป็นค่าฟังก์ชั่นจัดสรรวัตถุและส่งกลับตัวชี้ไปที่มันแทน อยู่บนพื้นฐานของการอภิปรายก่อนหน้านี้Rcpp::XPtr<>ดูเหมือนว่าวิธีการที่เหมาะสมที่จะกลับตัวชี้ไปยังวัตถุที่สร้างขึ้นใหม่คือการห่อมันด้วย อย่างไรก็ตามจากนั้น R ก็เห็นว่าเป็นไปอย่างมีประสิทธิภาพexternalptrและฉันพยายามดิ้นรนเพื่อหาวิธีที่เหมาะสมในการคัดเลือกด้วยวิธีการที่ทันสมัยRCPP_EXPOSED_CLASSและRCPP_MODULEวิธีการทำสิ่งต่างๆ ทางเลือกคือการส่งคืนตัวชี้ดิบ แต่ฉันไม่แน่ใจ 100% ว่าหน่วยความจำวัตถุได้รับการล้างอย่างถูกต้อง ฉันวิ่งvalgrindไปทดสอบการรั่วไหลของหน่วยความจำ แต่ก็ไม่พบอะไรเลย อย่างไรก็ตามใครทำความสะอาด? R? test.cpp #include <Rcpp.h> // Custom class class Double { public: Double( double v ) : value(v) {} double square() {return value*value;} private: double value; }; // Make the class visible RCPP_EXPOSED_CLASS(Double) // …
9 c++  r  rcpp 

6
จับคู่และลบอักขระที่ซ้ำซ้อน: แทนที่เหตุการณ์ที่ไม่ต่อเนื่องหลายรายการ (3+) ติดต่อกัน
ฉันกำลังมองหาregexลวดลายที่จะเข้าคู่กับตัวละครตัวที่สามสี่ ... ตัวละครแต่ละตัว ดูคำอธิบายด้านล่าง: ตัวอย่างเช่นฉันมีสตริงต่อไปนี้: 111aabbccxccybbzaa1 ฉันต้องการแทนที่อักขระที่ซ้ำกันทั้งหมดหลังจากที่เกิดขึ้นครั้งที่สอง ผลลัพธ์จะเป็น: 11-aabbccx--y--z--- บางรูปแบบของ regex ที่ฉันลองมา: ใช้ regex ต่อไปนี้ฉันสามารถค้นหาการเกิดขึ้นครั้งสุดท้ายของตัวละครแต่ละตัว: (.)(?=.*\1) หรือใช้อันนี้ฉันสามารถทำได้เพื่อทำซ้ำติดต่อกัน แต่ไม่ใช่สำหรับการทำซ้ำ: ([a-zA-Z1-9])\1{2,}
9 python  r  regex  string 

4
มีวิธีใดที่เร็วกว่าในการตรวจสอบว่ารายการในรายการเทียบเท่าหรือไม่
นี่ฉันมีจำนวนเต็ม1:7สำหรับสี่พาร์ทิชันที่แตกต่างกันกล่าวคือ {1}, {2,3,4}, {5,6} และ {7} list(1,c(2,3,4),c(5,6),7)และพาร์ทิชันเหล่านั้นจะถูกเขียนในรายการคือ ฉันถือว่าพาร์ติชั่นเป็นชุด, ดังนั้นการเปลี่ยนแปลงองค์ประกอบที่แตกต่างกันภายในพาร์ติชั่นหนึ่งควรถูกจดจำเป็นพาร์ติชั่นเดียวกัน. ตัวอย่างเช่นlist(1,c(2,3,4),c(5,6),7)และlist(7,1,c(2,3,4),c(6,5))เทียบเท่า โปรดทราบว่าไม่มีการทำซ้ำสำหรับองค์ประกอบในรายการเช่นไม่ใช่list(c(1,2),c(2,1),c(1,2))เนื่องจากปัญหานี้กำลังพูดถึงพาร์ติชันพิเศษเหนือทั้งชุด ฉันแสดงรายการการเรียงลำดับที่แตกต่างกันบางรายการลงในรายการ lstด้านล่าง lst <- list(list(1,c(2,3,4),c(5,6),7), list(c(2,3,4),1,7,c(5,6)), list(1,c(2,3,4),7,c(6,5)), list(7,1,c(3,2,4),c(5,6))) และสิ่งที่ฉันต้องการทำคือการตรวจสอบว่าพีชคณิตทั้งหมดมีความเท่าเทียมกัน TRUEถ้าใช่แล้วเราจะได้รับผล สิ่งที่ฉันทำจนถึงตอนนี้คือการจัดเรียงองค์ประกอบภายในแต่ละพาร์ติชันและใช้setdiff()กับinterset()และunion()ตัดสินมัน (ดูรหัสของฉันด้านล่าง) s <- Map(function(v) Map(sort,v),lst) equivalent <- length(setdiff(Reduce(union,s),Reduce(intersect,s),))==0 อย่างไรก็ตามฉันคิดว่าวิธีนี้จะช้าเมื่อใดก็ตามที่ขนาดพาร์ติชันเพิ่มขึ้น มีวิธีเร็วกว่าที่จะทำหรือไม่ ขอบคุณล่วงหน้า! กรณีทดสอบบางอย่าง (ข้อมูลขนาดเล็ก) # should return `TRUE` lst1 <- list(list(1,c(2,3,4),c(5,6)), list(c(2,3,4),1,c(5,6)), list(1,c(2,3,4),c(6,5))) # should return `TRUE` lst2 <- …

1
ทางเลือกที่เร็วกว่าเพื่อความไม่พอใจ ()
deparse(control = c("keepNA", "keepInteger"))ฉันจะรักษาแพคเกจที่อาศัยซ้ำโทรออกไปยัง controlเหมือนกันเสมอและการแสดงออกที่แตกต่างกันไป deparse()ดูเหมือนว่าจะใช้เวลามากในการตีความชุดตัวเลือกเดียวกันซ้ำ ๆ.deparseOpts()ดูเหมือนว่าจะใช้เวลามากในการตีความซ้ำชุดเดียวกันกับตัวเลือก microbenchmark::microbenchmark( a = deparse(identity, control = c("keepNA", "keepInteger")), b = .deparseOpts(c("keepNA", "keepInteger")) ) # Unit: microseconds # expr min lq mean median uq max neval # a 7.2 7.4 8.020 7.5 7.6 55.1 100 # b 3.0 3.2 3.387 3.4 3.5 6.0 100 …
9 r 

3
ฉันทำอะไรกับ dtplyr ไม่ได้ใน data.table
ฉันควรจะลงทุนความพยายามในการเรียนรู้ของฉันสำหรับข้อมูลที่ถกเถียงในการวิจัยโดยเฉพาะระหว่างdplyr, dtplyrและdata.table? ฉันใช้dplyrเป็นส่วนใหญ่ แต่เมื่อข้อมูลมีขนาดใหญ่เกินไปสำหรับที่ฉันจะใช้data.tableซึ่งเป็นเหตุการณ์ที่เกิดขึ้นได้ยาก ดังนั้นตอนนี้dtplyrv1.0 ก็กลายเป็นอินเทอร์เฟซสำหรับdata.tableบนพื้นผิวมันดูเหมือนว่าฉันไม่ต้องกังวลกับการใช้data.tableอินเทอร์เฟซอีกเลย ดังนั้นสิ่งที่เป็นคุณสมบัติที่มีประโยชน์มากที่สุดหรือแง่มุมของการdata.tableที่ไม่สามารถทำได้โดยใช้dtplyrในขณะนี้และมีแนวโน้มที่จะไม่เคยทำได้ด้วยdtplyr? บนใบหน้าของตนdplyrกับผลประโยชน์ของการdata.tableทำให้เสียงเหมือนจะแซงdtplyr dplyrมีเหตุผลใดบ้างที่จะใช้dplyrอีกครั้งเมื่อdtplyrครบกำหนด? หมายเหตุ: ฉันไม่ได้ถามเกี่ยวกับdplyrvs data.table(เช่นเดียวกับdata.table vs dplyr: คนหนึ่งสามารถทำสิ่งที่ดีไม่สามารถหรือไม่ดีได้หรือไม่ ) แต่ให้คนอื่นเป็นที่ต้องการมากกว่าอีกปัญหาหนึ่งทำไมจะไม่ เสื้อdtplyrจะเป็นเครื่องมือในการใช้งาน
9 r  dplyr  data.table  dtplyr 

5
การสร้างคอลัมน์ใหม่ตามเงื่อนไขโดยอิงตามแถวก่อนหน้า
ฉันมีกรอบข้อมูลติดตั้งดังนี้: df <- data.frame("id" = c(111,111,111,222,222,222,222,333,333,333,333), "Location" = c("A","B","A","A","C","B","A","B","A","A","A"), "Encounter" = c(1,2,3,1,2,3,4,1,2,3,4)) id Location Encounter 1 111 A 1 2 111 B 2 3 111 A 3 4 222 A 1 5 222 C 2 6 222 B 3 7 222 A 4 8 333 B 1 9 333 A …

2
R: วิธีแยกลอจิกโค้ดอย่างหรูหราจาก UI / html-tags อย่างไร
ปัญหา เมื่อสร้างองค์ประกอบ UI แบบไดนามิก ( shiny.tag,, shiny.tag.list... ) ฉันมักจะพบว่ามันยากที่จะแยกมันออกจากตรรกะรหัสของฉันและมักจะจบลงด้วยระเบียบที่สับสนของซ้อนกันtags$div(...)ผสมกับลูปและงบเงื่อนไข แม้จะดูน่ารำคาญและน่าเกลียด แต่ก็มีข้อผิดพลาดเช่นกันเช่นเมื่อทำการเปลี่ยนแปลงกับแม่แบบ html ตัวอย่างที่ทำซ้ำได้ สมมติว่าฉันมีโครงสร้างข้อมูลต่อไปนี้: my_data <- list( container_a = list( color = "orange", height = 100, content = list( vec_a = c(type = "p", value = "impeach"), vec_b = c(type = "h1", value = "orange") ) ), container_b = list( …

1
วิธีการแทรกรูปภาพลงในแต่ละแถบในกราฟ ggplot
ฉันพยายามที่จะเปรียบเทียบล่วงหน้าเอ็นบีเอที่แตกต่างกันทั่วสถิติที่แตกต่างกันและฉันคิดว่ากราฟจะดูดีถ้าฉันสามารถเพิ่มใบหน้าของผู้เล่นในตอนท้ายของกราฟเหมือนในR / กราฟ รหัสของฉันคือตอนนี้: a3 %>% ggplot(aes(x = reorder(Player, PPM), y = PPM)) + geom_bar(stat = "identity", aes(fill = Player)) + geom_text(aes(label = PPM), size = 3, position = position_dodge(width = 1), hjust = -0.1) + coord_flip() + theme_minimal() + xlab("Player") + ylab("Points Per Minute") + theme(legend.position = "none") นี่คือลักษณะกราฟของฉันในปัจจุบัน
9 r  image  ggplot2 

3
วิธีการจัดเรียงอักขระอย่างมีประสิทธิภาพในสตริงใน R?
ฉันจะจัดเรียงอักขระของแต่ละสตริงอย่างมีประสิทธิภาพได้อย่างไรในเวกเตอร์ ตัวอย่างเช่นกำหนดเวกเตอร์ของสตริง: set.seed(1) strings <- c(do.call(paste0, replicate(4, sample(LETTERS, 10000, TRUE), FALSE)), do.call(paste0, replicate(3, sample(LETTERS, 10000, TRUE), FALSE)), do.call(paste0, replicate(2, sample(LETTERS, 10000, TRUE), FALSE))) ฉันได้เขียนฟังก์ชันที่จะแยกแต่ละสตริงเป็นเวกเตอร์เรียงลำดับเวกเตอร์แล้วยุบผลลัพธ์: sort_cat <- function(strings){ tmp <- strsplit(strings, split="") tmp <- lapply(tmp, sort) tmp <- lapply(tmp, paste0, collapse = "") tmp <- unlist(tmp) return(tmp) } sorted_strings <- sort_cat(strings) …

4
วิธีที่มีประสิทธิภาพในการปล่อยแถวด้วยเวลาที่ทับซ้อนกัน
ฉันมีชุดข้อมูลขนาดยาวที่มีคอลัมน์ซึ่งแสดงเวลาเริ่มต้นและหยุดและฉันต้องการวางแถวถ้ามันทับซ้อนกับอีกชุดหนึ่งและมีลำดับความสำคัญสูงกว่า (เช่น 1 คือลำดับความสำคัญสูงสุด) ข้อมูลตัวอย่างของฉันคือ library(tidyverse) library(lubridate) times_df <- tibble(start = as_datetime(c("2019-10-05 14:05:25", "2019-10-05 17:30:20", "2019-10-05 17:37:00", "2019-10-06 04:43:55", "2019-10-06 04:53:45")), stop = as_datetime(c("2019-10-05 14:19:20", "2019-10-05 17:45:15", "2019-10-05 17:50:45", "2019-10-06 04:59:00", "2019-10-06 05:07:10")), priority = c(5,3,4,3,4)) วิธีที่ฉันเกิดขึ้นกับการโจมตีปัญหาย้อนหลังโดยการค้นหาการทับซ้อนที่มีค่าลำดับความสำคัญสูงกว่าและจากนั้นใช้anti_joinเพื่อลบออกจาก dataframe เดิม รหัสนี้ใช้ไม่ได้หากมีจุดสามจุดทับซ้อนกันของ timepoint เดียวกันและฉันแน่ใจว่ามีวิธีที่มีประสิทธิภาพและการทำงานมากกว่านี้ dropOverlaps <- function(df) { drops <- df %>% …
9 r  dplyr 

2
ทำไมการอ้างอิงสองรายการไปยังเวกเตอร์เดียวกันจึงส่งกลับที่อยู่หน่วยความจำที่แตกต่างกันสำหรับแต่ละองค์ประกอบของเวกเตอร์
ฉันกำลังเรียน R และตอนนี้ฉันกำลังอ่านหนังสือเล่มนี้ เพื่อให้แน่ใจว่าฉันเข้าใจแนวคิดฉันได้ทำการทดสอบต่อไปนี้ซึ่งทำให้ฉันค่อนข้างสับสนและฉันยินดีถ้าคุณสามารถอธิบายได้ นี่คือการทดสอบที่ฉันรันโดยตรงในเชลล์ R จากเทอร์มินัล (ไม่ใช้ RStudio หรือ Emacs ESS) > library(lobstr) > > x <- c(1500,2400,8800) > y <- x > ### So the following two lines must return the same memory address > obj_addr(x) [1] "0xb23bc50" > obj_addr(y) [1] "0xb23bc50" > ### So as I expected, …
9 r 

1
การลดตัวแปรในสูตร lm ยังทำให้เกิดข้อผิดพลาดของความต่าง
ฉันกำลังพยายามเรียกใช้ lm () ในชุดย่อยของข้อมูลของฉันและพบปัญหา dt = data.table(y = rnorm(100), x1 = rnorm(100), x2 = rnorm(100), x3 = as.factor(c(rep('men',50), rep('women',50)))) # sample data lm( y ~ ., dt) # Use all x: Works lm( y ~ ., dt[x3 == 'men']) # Use all x, limit to men: doesn't work (as expected) …
9 r  formula  lm  factors 

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