- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对以下代码的结果感到惊讶。我希望 (0,10,5,0)。
w <- numeric(4)
subw <- c(2,3,2) # these would have been picked at random with replacement
w[subw] <- w[subw] + 5
它产生 (0,5,5,0)。我曾希望 R 会遍历这三个索引。这个例子是我真正想做的事情的一个非常简化的例子。 subw 将由样本函数生成(替换,这就是索引可能重复的原因)并且 w 的长度会更长。这将是多次运行的 Monte Carlo 模拟的一部分,因此我希望它能够快速运行,从而避免 for 循环。
This stackoverflow post似乎解释了为什么重复索引似乎被忽略了。我希望有人会建议一个有效和清晰的实现(也许是一个应用)来实现我的目标。我发现这行得通,但很难看:
w<-numeric(4)
subw <- c(2,3,2)
tbl <- table(subw)
w[as.numeric(names(tbl))]<-w[as.numeric(names(tbl))]+as.numeric(tbl)*5
原来是一个for循环for(i in samp) w[i]<-w[i]+wt.incr
比使用表函数快得多。
最佳答案
这会很快
w = w + tabulate(subw, length(w)) * 5
但需要稍微考虑一下所需操作所隐含的交换/关联关系。当 subw 很长时,它胜过简单的 for ()
循环。
这里是作为函数的解决方案
f1 = function(x, s, incr = 5) {
for (i in s)
x[i] = x[i] + incr
x
}
f2 = function(x, s, incr = 5)
x + tabulate(s, length(x)) * incr
add5 <- function(vec, i, incr = 5) { vec[i] <- vec[i] + incr ; vec ; }
f3 = function(x, s, incr = 5)
Reduce(add5, s, init = x)
一些正确性测试
identical(f1(w, subw), f2(w, subw))
identical(f1(w, subw), f3(w, subw))
和一些速度测试
> library(microbenchmark)
> microbenchmark(f1(w, subw), f2(w, subw), f3(w, subw))
Unit: microseconds
expr min lq mean median uq max neval cld
f1(w, subw) 1.777 1.9860 2.22398 2.0665 2.2240 12.491 100 a
f2(w, subw) 4.429 4.6470 5.05318 4.8060 5.0635 14.447 100 a
f3(w, subw) 10.087 10.7365 32.88477 11.0870 11.4360 2186.267 100 a
> subw = rep(subw, 100); microbenchmark(f1(w, subw), f2(w, subw), f3(w, subw))
Unit: microseconds
expr min lq mean median uq max neval cld
f1(w, subw) 64.109 64.6135 69.06132 65.0020 66.8465 136.782 100 b
f2(w, subw) 8.385 9.2055 10.29200 9.9430 10.7445 27.038 100 a
f3(w, subw) 498.359 502.5645 531.55586 510.8075 528.6180 922.741 100 c
> subw = rep(subw, 100); microbenchmark(f1(w, subw), f2(w, subw), f3(w, subw))
Unit: microseconds
expr min lq mean median uq max neval
f1(w, subw) 6109.118 6179.5460 6360.9743 6336.36 6464.728 7172.804 100
f2(w, subw) 362.895 378.0825 396.5647 387.67 399.590 693.424 100
f3(w, subw) 48699.123 51214.5500 53320.6088 52772.97 54681.484 68083.120 100
cld
b
a
c
> w = rep(w, 100); microbenchmark(f1(w, subw), f2(w, subw), f3(w, subw))
Unit: microseconds
expr min lq mean median uq max
f1(w, subw) 6107.856 6218.161 6318.051 6312.1125 6397.8395 6653.964
f2(w, subw) 362.744 374.898 388.536 388.7945 398.7475 437.099
f3(w, subw) 67727.781 68851.986 72846.097 69514.9865 70518.8100 194103.885
neval cld
100 b
100 a
100 c
> w = rep(w, 100); microbenchmark(f1(w, subw), f2(w, subw))
Unit: microseconds
expr min lq mean median uq max neval cld
f1(w, subw) 6202.629 6271.900 6504.5917 6387.843 6521.6990 10911.398 100 b
f2(w, subw) 686.987 792.672 839.5853 799.350 822.1955 3842.472 100 a
当然,正确性和速度并不是一切,显然相对性能取决于问题的(未指定)规模。
关于r - 在 R 中通过矢量化(子集)分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49909086/
我正在执行大型 ffdf 对象的子集,我注意到当我使用 subset.ff 时,它会生成大量 NA。我通过使用 ffwhich 尝试了另一种方法,结果要快得多,并且没有生成 NA。这是我的测试: li
我对 Prolog 有点陌生。我正在尝试编写一个函数subset(Set, Subset) 来确定Subset 是否是Set 的子集(duh)。另外,如果第二个参数没有实例化,它应该输出每个可能的子集
一、题目 给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 二、示例 输入:nums = [1,2
我想从数据帧的操作中排除一列。当然,我可以在没有要排除的列的情况下复制数据框,但这似乎是一种解决方法。我认为必须有一种更简单的方法来进行子集化。 所以这个示例代码应该显示我在做什么。 df colMe
我有一个 SpatialPolygonsDataFrame我通过使用 readOGR 读取 shapefile 创建的在 rgdal包裹。我正在尝试使用它来使用 spsample 生成采样网格在 sp
我想解决一个简单的问题,但即使我尝试了很多不同的方法,我也找不到解决方案。我正在使用 SICStus Prolog (如果这很重要),并且我想获取列表的所有子列表/子集(我不知道哪个术语是正确的),其
我目前正在使用 shinyTable,它是 HandsonTable (https://github.com/trestletech/shinyTable) 的 shiny 兼容实现。巧合的是,我意识
我正在 Delphi 中构建一个表单,其中包含服务下拉列表和用于选择服务的附加组件网格。我获取的数据来自 API,并且我将服务的数据存储在 ADODataSet 中,如下所示: ID (integer
subset() 函数有问题。如何通过观察次数对我的数据框的一个因子进行子集化? NAME CLASS COLOR VALUE antonio
我想知道是否有任何简单的算法来比较一个散列是否是另一个散列的子集。 例如,如果 $HASH{A} = B; $HASH{B} = C; $HASH{C} = D; $HASH2{A} = B; $HA
这个问题在这里已经有了答案: Array combinations without repetition (1 个回答) 关闭 8 年前。 给定一个数组,如何在 postgresql 中找到一定大小
我有下一个程序。我应该如何在 main 中使用迭代器以显示总和为 0 的子集? 我的程序应该打印: 2 -2 5 -5 # include # include using namespace st
我正在寻找一个可以自定义的 Markdown 解析器,最好是 Javascript。特别是,我想删除使用实际 HTML 标签的选项。我尝试编辑摊牌的来源,但无法弄清楚。 Jquery 集成也很好,尽管
我有一个包含名称列表的文件(引用文件 1): Apple Bat Cat 我有另一个文件(引用文件 2),其中包含名称列表和详细信息引用: Apple bla blaa aaaaaaaaagggggg
我有两个带有排序行的文件。一个文件 (B) 是另一个文件 (A) 的子集。我想找到 A 中不在 B 中的所有行。理想情况下,我想创建一个包含这些行的文件 (C)。这在 Unix 中可能吗?我正在寻找一
我有一个包含肽序列的列的数据框,我只想保留字符串中没有内部“R”或“K”的行。 df1 <- data.frame( Peptide = c("ABCOIIJUHFSAUJHR", "AOFI
这个问题在这里已经有了答案: How to subset matrix to one column, maintain matrix data type, maintain row/column na
假设我有一个列表向量: library(tidyverse) d 2) # A tibble: 5 x 1 x 1 2 3 4 5 最佳答案 应该是 lengt
我自己从来没有运行过javadoc(无论是在命令行还是ant's javadoc task;我将使用ant)——我需要为我编写的库生成一个javadoc。 问题是我的 java 库被组织成几个包,在
假设一个多方加密方案,类似于答案:Encryption with multiple different keys? . 那是。一组键K可以用来破译密文。 有没有办法过期: K'⊆ K 这样 K \ K
我是一名优秀的程序员,十分优秀!