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

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

1
การกลายพันธุ์หลายคอลัมน์แบบไดนามิกในขณะที่การปรับอากาศในแถวที่เฉพาะเจาะจง
ฉันรู้ว่ามีคำถามที่คล้ายกันอยู่หลายแห่งที่นี่ แต่ดูเหมือนจะไม่มีใครตอบคำถามที่แม่นยำที่ฉันมี set.seed(4) df = data.frame( Key = c("A", "B", "A", "D", "A"), Val1 = rnorm(5), Val2 = runif(5), Val3 = 1:5 ) ฉันต้องการ zeroise ค่าของคอลัมน์ค่าสำหรับแถวที่ Key == "A" ชื่อคอลัมน์ถูกอ้างอิงผ่าน a grep: cols = grep("Val", names(df), value = TRUE) โดยปกติแล้วเพื่อให้ได้สิ่งที่ฉันต้องการในกรณีนี้ฉันจะใช้data.tableสิ่งนี้: library(data.table) df = as.data.table(df) df[Key == "A", (cols) := 0] …
11 r  dplyr  data.table 

5
รับฟังก์ชั่นที่มาทั้งหมด
ใน R ฉันใช้source()เพื่อโหลดบางฟังก์ชั่น: source("functions.R") เป็นไปได้ไหมที่จะรับรายการฟังก์ชั่นทั้งหมดที่กำหนดไว้ในไฟล์นี้? เป็นชื่อฟังก์ชั่น (บางทีsource()ตัวเองสามารถส่งคืนได้) PS: ทางเลือกสุดท้ายคือการโทรsource()ครั้งที่สองlocal({ source(); })แล้วทำls()ข้างในแล้วกรองฟังก์ชั่น แต่มันซับซ้อนเกินไป - มีวิธีแก้ปัญหาที่ง่ายกว่าและน้อยกว่าหรือไม่
11 r 

6
ผสาน dataframes ตามหลายคอลัมน์และเกณฑ์
ฉันมีสองdata.frames มีคอลัมน์ร่วมกันหลาย ๆ (ที่นี่: date, city, ctryและ ( other_) number) ตอนนี้ฉันต้องการรวมไว้ในคอลัมน์ด้านบน แต่ยอมรับระดับความแตกต่าง: threshold.numbers <- 3 threshold.date <- 5 # in days หากความแตกต่างระหว่างdateรายการคือ> threshold.date( เป็นวัน) หรือ > threshold.numbersฉันไม่ต้องการรวมบรรทัด ในทำนองเดียวกันถ้ารายการในcityเป็นสตริงย่อยของรายการอื่นdfในcityคอลัมน์ฉันต้องการให้บรรทัดถูกรวมเข้าด้วยกัน [ถ้าใครมีความคิดที่ดีในการทดสอบสำหรับชื่อเมืองที่เกิดขึ้นจริงคล้ายคลึงกันผมยินดีที่จะได้ยินเกี่ยวกับมัน.] (และให้คนแรกdfของรายการของdate, cityและcountryแต่ทั้งสอง ( other_) numberคอลัมน์และคอลัมน์อื่น ๆ dfทั้งหมดใน ลองพิจารณาตัวอย่างต่อไปนี้: df1 <- data.frame(date = c("2003-08-29", "1999-06-12", "2000-08-29", "1999-02-24", "2001-04-17", "1999-06-30", "1999-03-16", "1999-07-16", "2001-08-29", …
11 r  dataframe 

2
การสร้างฟังก์ชั่นหลายแง่มุมคอลัมน์
ฉันพยายามที่จะสร้างfacet_multi_col()ฟังก์ชั่นคล้ายกับfacet_col()ฟังก์ชั่นในggforce- ที่ช่วยให้รูปแบบ facet กับอาร์กิวเมนต์พื้นที่ (ซึ่งไม่สามารถใช้ได้facet_wrap()) - แต่มากกว่าหลายคอลัมน์ ดังในพล็อตสุดท้ายด้านล่าง (สร้างด้วยgrid.arrange()) ฉันไม่ต้องการให้ facets จัดแนวข้ามแถวอย่างเหมาะสมเนื่องจากความสูงในแต่ละ facet จะแตกต่างกันไปตามyตัวแปรหมวดหมู่ที่ฉันต้องการใช้ ผมกำลังหาดีออกจากความลึกของฉันกับggprotoที่มีการอ่านนามสกุลคู่มือ ฉันคิดว่าวิธีที่ดีที่สุดคือการส่งโครงร่างเมทริกซ์เพื่อกำหนดตำแหน่งที่จะแบ่งคอลัมน์สำหรับชุดย่อยของข้อมูลที่สอดคล้องกันและสร้างfacet_col ใน ggforceเพื่อรวมพารามิเตอร์ช่องว่าง - ดูจุดสิ้นสุดของคำถาม ภาพประกอบสั้น ๆ เกี่ยวกับตัวเลือกที่ไม่น่าพอใจของฉัน ไม่มีแง่มุม library(tidyverse) library(gapminder) global_tile <- ggplot(data = gapminder, mapping = aes(x = year, y = fct_rev(country), fill = lifeExp)) + geom_tile() global_tile ฉันต้องการที่จะพังพล็อตตามทวีป ฉันไม่ต้องการร่างที่ยาวขนาดนี้ facet_wrap () global_tile …

1
พล็อต gganimate ที่จุดพักและเส้นจางหาย
นี่คือตัวอย่างที่ทำซ้ำได้ของสแตติกพล็อตซึ่งฉันต้องการทำให้เคลื่อนไหว (ฉันต้องการแสดงให้เห็นว่าตัวเก็บตัวอย่าง MCMC ทำงานอย่างไร) library(tidyverse) library(gganimate) set.seed(1234) plot_data <- tibble(x=cumsum(rnorm(100)), y=cumsum(rnorm(100)), time=1:length(x)) ggplot(data=plot_data, aes(x=y, y=x)) + geom_point() + geom_line() สิ่งที่ฉันต้องการเห็นคือจุดที่มองเห็นได้เมื่อวาดและจางไปเล็กน้อย (เช่น alpha เริ่มจากเช่น 1 ถึง 0.3) หลังจากนั้นในขณะที่จะมีบรรทัดที่แสดงประวัติล่าสุดเท่านั้น ประวัติล่าสุดที่จางหายไปน้อยกว่าและหายไปเพียงไม่กี่ก้าวก็หายไปโดยสิ้นเชิง) ต่อไปนี้บรรลุสิ่งที่ฉันต้องการมากขึ้นหรือน้อยลงสำหรับจุดของฉัน (ดังนั้นในความรู้สึกฉันแค่ต้องการเพิ่มเส้นสีซีดจางลงในจุดเชื่อมต่อสองสามจุดสุดท้าย - จุดที่ซีดจางช้ากว่าในบางเฟรมจะยิ่งดีกว่า) ggplot(data=plot_data, aes(x=y, y=x)) + geom_point() + transition_time(time) + shadow_mark(past = T, future=F, alpha=0.3) สิ่งที่ฉันกำลังดิ้นรนคือจะเพิ่มพฤติกรรมที่แตกต่างกันสองอย่างสำหรับสอง geoms เช่นจุดและเส้น เช่นในจุดด้านล่างจุดหายไป (ฉันไม่ต้องการให้) …

2
R ggplot2: ฉันจะตั้งชื่อแกน y ได้อย่างไรโดยขึ้นอยู่กับค่าของตัวแปรด้วย facet_wrap
ฉันจะให้ความคิดเกี่ยวกับข้อมูลของคุณและฉันคิดว่ามันควรจะง่ายกว่าที่จะเข้าใจสิ่งที่ฉันพยายามที่จะบรรลุ Repex: ID <- c(1, 1, 2, 3, 3, 3) cat <- c("Others", "Others", "Population", "Percentage", "Percentage", "Percentage") logT <- c(2.7, 2.9, 1.5, 4.3, 3.7, 3.3) m <- c(1.7, 1.9, 1.1, 4.8, 3.2, 3.5) aggr <- c("median", "median", "geometric mean", "mean", "mean", "mean") over.under <- c("overestimation", "overestimation", "underestimation", "underestimation", "underestimation", …
10 r  ggplot2 

3
ใช้ gganimate เพื่อสร้างการสังเกตฮิสโตแกรมโดยการสังเกต? ต้องการทำงานกับชุดข้อมูลขนาดใหญ่ (~ n = 5,000)
รางวัลจะหมดอายุในวันที่ 2 คำตอบสำหรับคำถามนี้มีสิทธิ์ได้รับค่าหัว+200ชื่อเสียง maxกำลังมองหาคำตอบจากแหล่งที่เชื่อถือได้ ฉันต้องการสุ่มตัวอย่างคะแนนจากการแจกแจงแบบปกติแล้วสร้าง dotplot ทีละตัวโดยใช้gganimateแพ็คเกจจนกว่าเฟรมสุดท้ายจะแสดง dotplot แบบเต็ม โซลูชันที่ใช้งานได้กับชุดข้อมูลที่มีขนาดใหญ่ขึ้น ~ 5,000 - 20,000 จุดเป็นสิ่งจำเป็น นี่คือรหัสที่ฉันมี: library(gganimate) library(tidyverse) # Generate 100 normal data points, along an index for each sample samples <- rnorm(100) index <- seq(1:length(samples)) # Put data into a data frame df <- tibble(value=samples, index=index) df มีลักษณะเช่นนี้: > …

1
R: การใช้อัลกอริทึมการเร่งการไล่ระดับสีของฉันเอง
ฉันพยายามเขียนอัลกอริทึมการไล่ระดับสีของฉันเอง ผมเข้าใจว่ามีแพคเกจที่มีอยู่เช่นgbmและxgboost,แต่ฉันต้องการที่จะเข้าใจว่าขั้นตอนวิธีการทำงานโดยการเขียนของตัวเอง ฉันกำลังใช้irisชุดข้อมูลและผลลัพธ์ของฉันคือSepal.Length(ต่อเนื่อง) ฟังก์ชั่นการสูญเสียของฉันคือmean(1/2*(y-yhat)^2)(พื้นข้อผิดพลาดยกกำลังสองเฉลี่ย 1/2 ในหน้า) y - yhatดังนั้นการไล่ระดับสีที่สอดคล้องกันของฉันเป็นเพียงที่เหลือ ฉันกำลังเริ่มต้นการทำนายที่ 0 library(rpart) data(iris) #Define gradient grad.fun <- function(y, yhat) {return(y - yhat)} mod <- list() grad_boost <- function(data, learning.rate, M, grad.fun) { # Initialize fit to be 0 fit <- rep(0, nrow(data)) grad <- grad.fun(y = data$Sepal.Length, yhat = fit) …

2
เงื่อนไขตัวกรอง dplyr เพื่อแยกความแตกต่างระหว่างสัญลักษณ์ยูนิโค้ดและการแทนยูนิโค้ด
ฉันพยายามกรองคอลัมน์สัญลักษณ์โดยพิจารณาว่าเป็นของแบบฟอร์มหรือไม่ \uxxxx นี้เป็นเรื่องง่ายสายตา, ที่อยู่, ลักษณะบางอย่างเช่น$, ¢, £และอื่น ๆ ที่ชอบ\u058f, ,\u060b\u07fe แต่ฉันไม่สามารถคิดออกโดยใช้stringi/dplyr library(dplyr) library(stringi) df <- structure(list(Character = c("\\u0024", "\\u00A2", "\\u00A3", "\\u00A4", "\\u00A5", "\\u058F", "\\u060B", "\\u07FE", "\\u07FF", "\\u09F2", "\\u09F3", "\\u09FB", "\\u0AF1", "\\u0BF9", "\\u0E3F", "\\u17DB", "\\u20A0", "\\u20A1", "\\u20A2", "\\u20A3"), Symbol = c("$", "¢", "£", "¤", "¥", "\u058f", "\u060b", "\u07fe", "\u07ff", "৲", "৳", …
10 r  dplyr  stringr  stringi 

1
พิกัด npc ของ geom_point ใน ggplot2
ฉันจะรับพิกัดx , yของgeom_pointในggplotโดยที่กรอบอ้างอิงเป็นภาพที่ถูกพล็อตทั้งหมดได้อย่างไร ฉันสามารถสร้างggplotด้วยgeom_pointบางอย่างโดยใช้: library(ggplot2) my.plot <- ggplot(data.frame(x = c(0, 0.456, 1), y = c(0, 0.123, 1))) + geom_point(aes(x, y), color = "red") สิ่งนี้ให้: โดยการแปลงเป็นgrobฉันสามารถดึงข้อมูลเพิ่มเติมบางอย่างเกี่ยวกับggplotนี้เช่นพิกัดที่เกี่ยวกับแผงพล็อตซึ่งมีลูกศรสีม่วงทำเครื่องหมายไว้ อย่างไรก็ตามสิ่งนี้จะไม่สนใจพื้นที่ที่แกนนำมาใช้ my.grob <- ggplotGrob(my.plot) my.grob$grobs[[6]]$children[[3]]$x # [1] 0.0454545454545455native 0.46native 0.954545454545454native my.grob$grobs[[6]]$children[[3]]$y # [1] 0.0454545454545455native 0.157272727272727native 0.954545454545454native ฉันจะรับค่าพิกัดx , y ได้อย่างไรเมื่อฉันเริ่มวัดจากมุมล่างซ้ายของภาพทั้งหมดทำเครื่องหมายโดยลูกศรสีเขียว ถ้าเป็นไปได้ผมอยากวิธีการคำนึงถึงรูปแบบของggplot การเพิ่มธีมเช่น+ theme_void()มีผลกับแกนและเลื่อนตำแหน่งของจุดด้วยความเคารพต่อภาพที่ถูกพล็อตทั้งหมด ปรับปรุง : …
10 r  ggplot2  grob 

1
ค่าเริ่มต้นเริ่มต้นที่เหมาะสมกับการถดถอยโลจิสติกกับ GLM
ฉันสงสัยว่ามีการระบุค่าเริ่มต้นเริ่มต้นglmอย่างไร โพสต์นี้แสดงให้เห็นว่ามีการตั้งค่าเริ่มต้นเป็นศูนย์ นี้หนึ่งบอกว่ามีขั้นตอนวิธีการที่อยู่เบื้องหลังมัน แต่การเชื่อมโยงที่เกี่ยวข้องจะเสีย ฉันพยายามจัดรูปแบบการถดถอยแบบโลจิสติกส์แบบเรียบง่ายด้วยการติดตามอัลกอริทึม: set.seed(123) x <- rnorm(100) p <- 1/(1 + exp(-x)) y <- rbinom(100, size = 1, prob = p) # to see parameter estimates in each step trace(glm.fit, quote(print(coefold)), at = list(c(22, 4, 8, 4, 19, 3))) ก่อนไม่มีข้อกำหนดของค่าเริ่มต้น: glm(y ~ x, family = "binomial") Tracing glm.fit(x …

2
วิธีการถักภาพอินไลน์ที่จัดแนวกับข้อความหลายบรรทัดโดยใช้ r-markdown?
ฉันต้องการถักรายงานเพื่อให้ส่วนหัวคล้ายกับภาพด้านล่าง สี่เหลี่ยมจัตุรัสที่ด้านซ้ายสุดเป็นไอคอน สี่เหลี่ยมเป็นข้อความ ฉันพบปัญหาสามข้อในขณะนี้ วิธีการแทรกไอคอนด้วย url (ภาพออนไลน์) วิธีจัดรูปแบบไอคอนเพื่อให้สอดคล้องกับข้อความ 3 แถว วิธีการเปลี่ยนขนาดตัวอักษรและระยะห่างระหว่างบรรทัดระหว่างแถว โปรดหาตัวอย่างที่ทำซ้ำได้น้อยที่สุดด้านล่าง (โปรดทราบว่าฉันได้แสดงความคิดเห็นภาพออนไลน์เพราะฉันไม่ทราบวิธีการใช้รหัสอย่างถูกต้อง) --- output: pdf_document geometry: margin=0.25in classoption: - landscape --- ```{r, echo=FALSE, results='asis'} for (i in unique(iris$Species)) { cat("\\newpage") # cat('\n![](https://bookdown.org/yihui/rmarkdown/images/hex-rmarkdown.png)\n') cat("\n#", "Iris Species Summary", "\\hfill", paste0("Exhibit ", grep(i, unique(iris$Species)), ".1")) cat("\n##", i, "\\hfill", "(Gross)") cat("\n######", "(000's)", "\\hfill", …
10 r  r-markdown  knitr 

6
แยก colname จากรายการ data.frames ที่ซ้อนกัน
ฉันมีรายการ data.frames ซ้อนกันวิธีที่ง่ายที่สุดในการรับชื่อคอลัมน์ของ data.frames ทั้งหมดคืออะไร ตัวอย่าง: d = data.frame(a = 1:3, b = 1:3, c = 1:3) l = list(a = d, list(b = d, c = d)) ผลลัพธ์: $a [1] "a" "b" "c" $b [1] "a" "b" "c" $c [1] "a" "b" "c"
10 r 

3
R: วิธีสุ่มตัวอย่างโดยไม่มีการแทนที่และไม่มีค่าเดียวกันติดต่อกัน
ฉันใช้เวลาทั้งวันพยายามทำให้สิ่งที่ดูเหมือนจะเป็นเรื่องง่ายมาก ฉันต้องสร้าง 300 'สุ่ม' วนเวียนซึ่งตัวเลข 1,2,3 และ 4 ทั้งหมดปรากฏ 12 ครั้ง แต่ไม่เคยใช้หมายเลขเดียวกันสองครั้งในแถว '/ ติดต่อกัน ความพยายามที่ดีที่สุดของฉัน (ฉันเดา) คือ: มีตัวอย่าง R 48 รายการโดยไม่มีการเปลี่ยนทดสอบว่ามีค่าต่อเนื่องเป็น rle หรือไม่จากนั้นใช้เฉพาะลำดับที่ไม่มีค่าติดต่อกัน ปัญหา: แทบจะไม่มีการสุ่มลำดับที่ตรงกับเกณฑ์นี้ดังนั้นจึงต้องใช้ตลอดไป มี R สร้างลำดับโดยไม่มีค่าต่อเนื่อง (ดูรหัส) pop<-rep(1:4,12) y=c() while(length(y)!=48) { y= c(y,sample(pop,48-length(y),replace=F)) y=y[!c(FALSE, diff(y) == 0)] } ปัญหา: สิ่งนี้สร้างลำดับที่มีตัวเลขแตกต่างกันของแต่ละค่า จากนั้นฉันพยายามใช้เฉพาะลำดับเหล่านั้นที่มี 12 ค่าแต่ละค่าเท่านั้น แต่นั่นทำให้ฉันกลับมาที่ปัญหา 1: ใช้เวลาตลอดไป ต้องมีวิธีง่าย ๆ …
10 r  sample 

2
แสดงชิ้นโค้ดหลาย ๆ แบบในเวลาสั้น ๆ
ฉันกำลังสร้างบล็อกblogdownที่ฉันเปรียบเทียบรหัสจาก R และรหัสจาก Stata ฉันต้องการแสดงรหัสทั้งสองเพื่อให้ผู้ใช้สามารถเปรียบเทียบวิธีการทำใน R และ Stata ยิ่งไปกว่านั้นการวางสองชิ้นขึ้นไปในแถว (รหัสสำหรับ R, รหัสสำหรับ Stata + output) ทำให้การอ่านค่อนข้างอึดอัด มีหลายเลย์เอาต์ในใจของฉันที่จะใส่ชิ้นส่วนหลายอัน แต่ฉันไม่รู้ว่ามันถูกนำไปใช้แล้วหรือเป็นไปได้ที่จะทำเช่นนั้น มีปุ่มที่จะแสดง / ซ่อนชิ้น (หนึ่งปุ่มต่อชิ้น ) ความคิดหนึ่งจะมี: โค้ด R ที่มองเห็นได้ตามค่าเริ่มต้นในบทความ โค้ด Stata จะมองไม่เห็นโดยค่าเริ่มต้น แต่จะปรากฏให้เห็นหากผู้ใช้คลิกที่ปุ่ม บุคคลนี้และบุคคลนี้ประสบความสำเร็จในการพับส่วนของโค้ดในบล็อกดาวน์ แต่เห็นได้ชัดว่าซ่อนหรือแสดงทุกชิ้นโดยค่าเริ่มต้น ฉันจะซ่อนเฉพาะบางส่วนเป็นค่าเริ่มต้นได้อย่างไร มีตัวเลือก (เช่นตัวเลือกeval, echo... ) ที่ซ่อนหรือแสดงรหัสของโค้ดblogdownหรือไม่? ชิ้นส่วนที่มี "แท็บ" ชื่อของส่วนนี้พูดถึงตัวเอง: เป็นไปได้ไหมที่จะมีแท็บเป็นก้อนเพื่อให้เราสามารถเปลี่ยนจากรหัสหนึ่งเป็นรหัสอื่น (เช่นเดียวกับแท็บในเว็บเบราว์เซอร์เป็นต้น) แสดงชิ้นสองชุดต่อกัน ในบางblogdownธีม (อาจทั้งหมดฉันไม่รู้) ความกว้างลดลงค่อนข้างมากและมีพื้นที่ด้านข้างที่ไม่ได้ใช้ ดังนั้นจึงเป็นไปได้หรือไม่ที่จะเพิ่มความกว้างในบางส่วนของบทความและเพื่อแสดงสองชิ้นต่อกัน? ความคิดใด …
9 r  blogdown 

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