Questions tagged «r»

R是一种免费的开源编程语言和软件环境,用于统计计算,生物信息学,可视化和通用计算。请提供最少且可复制的示例以及所需的输出。使用`dput()`作为数据,并通过`library()`调用指定所有非基本包。不要为数据或代码嵌入图片,而应使用缩进的代码块。对于统计相关的问题,请使用https://stats.stackexchange.com。

2
检查差异是否小于机器精度的正确/标准方法是什么?
我经常遇到必须检查所获得的差异是否超出机器精度的情况。为此,R似乎有一个方便的变量:.Machine$double.eps。但是,当我转向R源代码获取有关使用此值的准则时,会看到多种不同的模式。 例子 以下是stats库中的一些示例: 检验 if(stderr < 10 *.Machine$double.eps * abs(mx)) chisq.test if(abs(sum(p)-1) > sqrt(.Machine$double.eps)) 整合 rel.tol < max(50*.Machine$double.eps, 0.5e-28) 影响力 e[abs(e) < 100 * .Machine$double.eps * median(abs(e))] <- 0 PRINCOMR if (any(ev[neg] < - 9 * .Machine$double.eps * ev[1L])) 等等 问题 一个如何理解这些不同背后的理由10 *,100 *,50 *和sqrt()修饰? 是否有关于.Machine$double.eps用于调整由于精度问题引起的差异的准则?

14
正数和负数序列的计数和求和
我想编写一个代码来计算和求和任何正数和负数。 数字可以是正数或负数(不为零)。 我用for循环编写了代码。有创意吗? 数据 [R set.seed(100) x <- round(rnorm(20, sd = 0.02), 3) 蟒蛇 x = [-0.01, 0.003, -0.002, 0.018, 0.002, 0.006, -0.012, 0.014, -0.017, -0.007, 0.002, 0.002, -0.004, 0.015, 0.002, -0.001, -0.008, 0.01, -0.018, 0.046] 循环 [R sign_indicator <- ifelse(x > 0, 1,-1) number_of_sequence <- rep(NA, 20) n <- …
31 python  r 

7
如何用一组值替换NA
我有以下数据框: library(dplyr) library(tibble) df <- tibble( source = c("a", "b", "c", "d", "e"), score = c(10, 5, NA, 3, NA ) ) df 看起来像这样: # A tibble: 5 x 2 source score <chr> <dbl> 1 a 10 . # current max value 2 b 5 3 c NA 4 d …
18 r  dplyr  tibble 

5
不带组的data.table线性内插NA值
我想在不带组的data.table中填充一些NA值。请考虑以下data.table提取物,该数据代表时间和距离: library(data.table) df <- data.frame(time = seq(7173, 7195, 1), dist = c(31091.33, NA, 31100.00, 31103.27, NA, NA, NA, NA, 31124.98, NA,31132.81, NA, NA, NA, NA, 31154.19, NA, 31161.47, NA, NA, NA, NA, 31182.97)) DT<- data.table(df) 我想在DT data.table中,使用取决于之前/之后的非NA值的函数填充NA值。例如,在j中编写一个函数来替换每条指令 DT[2, dist := (31091.33 + (31100-31091.33) / 2)] 然后 DT[5:8, dist := (31103.27 …
18 r  data.table 

3
为什么用Rcpp较慢地优化R目标函数,为什么呢?
我目前正在研究一种贝叶斯方法,该方法每次迭代都需要多项步骤来优化多项式logit模型。我正在使用optim()进行这些优化,并用R语言编写了一个目标函数。分析显示optim()是主要瓶颈。 深入研究后,我发现了这个问题,他们建议重新编码目标函数Rcpp可以加快处理过程。我遵循了该建议,并使用编码了我的目标函数Rcpp,但结果变慢了(大约慢了两倍!)。 这是我的第一次Rcpp(或与C ++有关的任何事情),但是我找不到找到矢量化代码的方法。任何想法如何使其更快? Tl; dr:Rcpp中函数的当前实现不如矢量化R快;如何使其更快? 一个可重现的示例: 1)在R和中定义目标函数Rcpp:仅截取多项式模型的对数似然 library(Rcpp) library(microbenchmark) llmnl_int <- function(beta, Obs, n_cat) { n_Obs <- length(Obs) Xint <- matrix(c(0, beta), byrow = T, ncol = n_cat, nrow = n_Obs) ind <- cbind(c(1:n_Obs), Obs) Xby <- Xint[ind] Xint <- exp(Xint) iota <- c(rep(1, (n_cat))) denom <- log(Xint %*% …
16 c++  r  optimization  rcpp 

1
seq.int有哪些限制?
该seq手册页指出以下(重点煤矿): 描述 生成规则序列。seq是具有默认方法的标准泛型。seq.int是一个原语,可以更快,但有一些限制。 该页面实际上并未描述这些限制是什么。这里seq.int还有其他提及: 争论 [...] length.out所需的序列长度。一个非负数,如果为小数seq,seq.int则将对其进行四舍五入。 [...] 细节 [...] 的无名参数的解释seq和seq.int不规范,并建议总是在节目命名的参数。 [...] seq.int是一个内部泛型,它seq根据提供的第一个参数的类(在参数匹配之前)调度“ ”的方法。 seq.int,seq_along并且seq_len是原始的。 值 seq.int而seq用于数字参数的默认方法将返回类型为“ integer”或“ double” 的向量:程序员不应依赖于哪一个。 除了声明根据其第一个参数的类seq.int调度外seq,我看不到任何“限制”。 那么,这些限制是什么?
15 r 

4
使用R来解决Lucky 26游戏
我正试图向我的儿子展示如何使用编码来解决游戏带来的问题,以及如何让R处理大数据。有问题的游戏称为“幸运26”。在此游戏中,数字(1-12,无重复)位于大卫之星的12个点(6个顶点,6个交点)上,并且6行4个数字必须全部加为26。在大约4.79亿可能性中(12P12 )显然有144个解决方案。我试图按照以下方式在R中对此进行编码,但内存似乎是一个问题。如果成员有时间,我将不胜感激任何建议以提高答案。预先感谢成员。 library(gtools) x=c() elements <- 12 for (i in 1:elements) { x[i]<-i } soln=c() y<-permutations(n=elements,r=elements,v=x) j<-nrow(y) for (i in 1:j) { L1 <- y[i,1] + y[i,3] + y[i,6] + y[i,8] L2 <- y[i,1] + y[i,4] + y[i,7] + y[i,11] L3 <- y[i,8] + y[i,9] + y[i,10] + y[i,11] L4 …
15 r  bigdata  permutation 

3
确定该函数中的函数名称
我如何在该非匿名函数中获取函数名称?在下面,我假设有一个函数或过程来执行此操作magical_r_function(),以及预期的输出结果。 my_fun <- function(){ magical_r_function() } my_fun() ## [1] "my_fun" foo_bar <- function(){ magical_r_function() } foo_bar() ## [1] "foo_bar" ballyhoo <- function(){ foo_bar() } ballyhoo() ## [1] "foo_bar" tom_foolery <- foo_bar tom_foolery() ## [1] "tom_foolery"
14 r 

4
使用数据表或igraph按组查找直接邻居
我有一个data.table: groups <- data.table(group = c("A", "B", "C", "D", "E", "F", "G"), code_1 = c(2,2,2,7,8,NA,5), code_2 = c(NA,3,NA,3,NA,NA,2), code_3 = c(4,1,1,4,4,1,8)) group code_1 code_2 code_3 A 2 NA 4 B 2 3 1 C 2 NA 1 D 7 3 4 E 8 NA 4 F NA NA 1 G …
14 r  data.table  igraph 

2
如何以编程方式确定ggplot有多少个方面?
下面是代码和图形。 该图具有三个方面。the_plot我在哪里可以找到它的三个方面?是的,我可以从mtcars数据框或中获取数据the_plot$data,但是我不想重新创建数据分析。相反,我想检查的图形元素the_plot,因此不必在多个地方重复应用程序逻辑。 the_plot$facet不会显示我所识别的任何内容,其他图变量也不会显示。 我正在使用tidyverse 1.3.0。 library(tidyverse) data(mtcars) the_plot<-ggplot(mtcars, aes(mpg, disp, group=cyl)) + facet_wrap(~cyl) + geom_point() the_plot
13 r  ggplot2 

3
基于tidyeval的非标准评估在mutate右侧重新编码中的使用
考虑一个小标题,其中每一列都是可以采用许多值的字符向量-假设是“ A”到“ F”。 library(tidyverse) sample_df <- tibble(q1 = c("A", "B", "C"), q2 = c("B", "B", "A")) 我希望创建一个函数,该函数将列名作为参数,并重新编码该列,以使任何答案“ A”都变为NA,否则按原样返回df。以这种方式设计它的原因是适合于使用给定列执行一系列操作的更广泛的管道。 有很多方法可以做到这一点。但是我有兴趣了解最佳的惯用tidy_eval / tidyverse方法是什么。首先,问题名称必须位于变异动词的左侧,因此我们适当地使用!!and :=运算符。但是,那该放在右边呢? fix_question <- function(df, question) { df %>% mutate(!!question := recode(... something goes here...)) } fix_question(sample_df, "q1") # should produce a tibble whose first column is (NA, "B", "C") …
13 r  dplyr  rlang  tidyeval  nse 

1
如何旋转R中带有节和子节的列组成的数据框
我有一个下面提到的数据框: structure( list(ID = c("P-1", " P-1", "P-1", "P-2", "P-3", "P-4", "P-5", "P-6", "P-7", "P-8"), Date = c("2020-03-16 12:11:33", "2020-03-16 13:16:04", "2020-03-16 06:13:55", "2020-03-16 10:03:43", "2020-03-16 12:37:09", "2020-03-16 06:40:24", "2020-03-16 09:46:45", "2020-03-16 12:07:44", "2020-03-16 14:09:51", "2020-03-16 09:19:23"), Status = c("SA", "SA", "SA", "RE", "RE", "RE", "RE", "XA", "XA", "XA"), Flag …


1
筛选数据表时,链接比ANDing的性能优势
我习惯于将相似的任务集中到一行中。例如,如果我需要过滤a,b以及c在数据表中,我把它们放在一起在一个[]与AND运算。昨天,我注意到在我的特定情况下,它的运行速度非常慢,并且经过了测试,却没有测试链接过滤器。我在下面提供了一个示例。 首先,我为随机数生成器添加种子,加载data.table,并创建一个虚拟数据集。 # Set RNG seed set.seed(-1) # Load libraries library(data.table) # Create data table dt <- data.table(a = sample(1:1000, 1e7, replace = TRUE), b = sample(1:1000, 1e7, replace = TRUE), c = sample(1:1000, 1e7, replace = TRUE), d = runif(1e7)) 接下来,我定义我的方法。第一种方法将过滤器链接在一起。第二个将过滤器与在一起。 # Chaining method chain_filter <- function(){ dt[a %between% …
12 r  data.table 

1
在R中对“样本”功能进行基准测试
我sample在R中对函数进行了基准测试,并将其与进行比较,igraph:sample_seq结果遇到了奇怪的情况。 当我运行类似: library(microbenchmark) library(igraph) set.seed(1234) N <- 55^4 M <- 500 (mbm <- microbenchmark(v1 = {sample(N,M)}, v2 = {igraph::sample_seq(1,N,M)}, times=50)) 我得到这样的结果: Unit: microseconds expr min lq mean median uq max neval v1 21551.475 22655.996 26966.22166 23748.2555 28340.974 47566.237 50 v2 32.873 37.952 82.85238 81.7675 96.141 358.277 50 但是例如当我跑步时 set.seed(1234) N …
11 r  random 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.