- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
来自其他各种语言,我发现 R 功能强大且直观,但我对其性能并不满意。因此,我决定尝试改进我编写的一些片段,并学习如何在 R 中更好地编写代码。
这是我写的一个函数,试图确定一个向量是否是二进制值(两个不同的值或只有一个值):
isBinaryVector <- function(v) {
if (length(v) == 0) {
return (c(0, 1))
}
a <- v[1]
b <- a
lapply(v, function(x) { if (x != a && x != b) {if (a != b) { return (c()) } else { b = x }}})
if (a < b) {
return (c(a, b))
} else {
return (c(b, a))
}
}
编辑:如果不是二进制值,则此函数预计会遍历向量然后返回 c()
,如果不是二进制值则返回 c(a, b)
它是,a 是较小的值,b 是较大的值(如果 a == b 则只是 c(a, a)
。例如,对于
A B C
1 1 1 0
2 2 2 0
3 3 1 0
我将应用
这个isBinaryVector
并得到:
$A
[1] 1 1
$B
[1] 1 1
$C
[1] 0 0
处理中等大小的数据集(大约 1800 * 3500,其中 2/3 是二进制值)所花费的时间约为 15 秒。该集合仅包含 float 。
无论如何我可以更快地做到这一点吗?
感谢您的任何意见!
最佳答案
您实质上是在尝试编写一个函数,如果一个向量恰好有两个唯一值,则返回 TRUE,否则返回 FALSE。
试试这个:
> dat <- data.frame(
+ A = 1:3,
+ B = c(1, 2, 1),
+ C = 0
+ )
>
> sapply(dat, function(x)length(unique(x))==2)
A B C
FALSE TRUE FALSE
接下来,您要获取最小值和最大值。 range
函数就是这样做的。所以:
> sapply(dat, range)
A B C
[1,] 1 1 0
[2,] 3 2 0
至此,您拥有了制作一个易于理解且速度极快的小函数的所有要素,即使是在处理大量数据时也是如此:
isBinary <- function(x)length(unique(x))==2
binaryValues <- function(x){
if(isBinary(x)) range(x) else NA
}
sapply(dat, binaryValues)
$A
[1] NA
$B
[1] 1 2
$C
[1] NA
关于r - 我怎样才能让这个 R 代码片段更快、更像 R-ish?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10230101/
我想实现一个可以按颜色过滤图像的搜索。我的图像模型包含多达 10 个出现在该特定图像中的 UIColors,现在我想要一个过滤器,例如蓝色,绿色,红色,黄色。我如何检查(以指定的容差)该特定图像是否包
问题 Git 中 commit-ish 和 tree-ish 的具体例子是什么? Stack Overflow 问题 "What does tree-ish mean in git?" deals与
如果我需要,比如说,在 asm.js 模块中找到一个数字的整数部分和小数部分,我该怎么做?没有standard operators在 intish 和 doubleish 类型之间转换;即使 Math
我拥有的是一组用户和一组网络,这些用户需要在各种网络上拥有不同的电子邮件地址——有些是内部的,有些是外部的,有些是开发的,而且他们都有自己的命名& 寻址方案。 到目前为止,我所拥有的是简化的,删除了无
我有一个使用 jquery 的 javascript 函数: my.namespace.loadSomeStuff = function() { $.get('/Services/loadSt
首先,这是用于模式匹配的,所以请记住这一点,因为您可能有完全不同的解决方案,我想听听。 我有这一系列数据(暂时称它为 mystring)。 string a = get_starting_letter
我正在尝试在 P5js 中编写一个小型图形可视化工具,但我找不到可遵循的简单(-ish)算法。 我已经找到了使用 D3 来完成此操作的方法,并且我发现了一些密集的教科书片段(如 this ),但我正在
我正在尝试在 P5js 中编写一个小型图形可视化工具,但我找不到可遵循的简单(-ish)算法。 我已经找到了使用 D3 来完成此操作的方法,并且我发现了一些密集的教科书片段(如 this ),但我正在
public static boolean Xish 此方法应按以下顺序接受两个参数:要检查的单词的字符串和由要检查的字母组成的字符串。例如,如果一个单词以任意顺序包含字母 e、l 和 f,则该单词被
整个早上我都在用这个代码撞墙,最后决定来这里寻求帮助。 我有以下标记。 Summary THIS IS AN IMAGE "> 以及下面的 Jquery。 $(".cs").live('click',
所以我正在做一些关于回调函数的练习,我想自己尝试一下,并将它与 setTimeout 方法一起使用,令我惊讶的是,它没有按预期工作。请问我做错了什么在这里。 function first(number
我需要创建可以手动填写并以数字方式阅读的表格。我计划使用一种带有行和列的 scantron 式格式,用户只需在相应单元格的圆圈中着色,计算机就会根据单元格矩阵中的 xy 位置知道该值。就像一个exce
我正在尝试编写一个程序,作为其功能的一部分,它会连续捕获视频并实时或尽可能接近实时地计算给定帧的视频数据的平均亮度。这是我第一次涉足任何视频东西/iOS 相机东西,所以除了我自己的东西之外,我有点把我
我在 mySQL 数据库中有下表(注意:这些是总结的,因此它们与这个问题相关,一些列已被省略)。 author (id, username, password etc.) thread (id, ti
由于我无法控制的原因,我必须将带有一些 Unicode 字符的(英语)文本转换为 ASCII(以便在别处进一步处理)。例如: Deutsche Börse 当我这样做时: u'Deutsche Bör
我不断使用以下代码进行 segmentation 。将 4000 更改为 1000 可使代码运行良好。我会认为我这里有足够的内存...我该如何解决这个问题? #include #include #
我有一个对象列表,我想以随机顺序连续访问这些对象。 我想知道是否有一种方法可以确保随机值并不总是相似。 例子。 我的列表是队列列表,我试图交错这些值以生成用于测试的真实场景。 我并不是特别想要队列 1
我有一种情况需要优化无序集的创建。预期的元素数量约为 5-25M。我的第一个想法是我应该事先准备好所有数据并做一些类似的事情 unordered_set s(data); 代替 for (auto&
我有一个使用大图像作为背景的网站。这是一个大小为 134KB 的 jpeg - 到目前为止我真的无法得到它。我已经在低质量 jpeg 设置的 photoshop 中将其保存为网络。它的尺寸是:1920
在数组中的相同索引位置使用来自多个数组的参数创建类的新实例的“ruby-ish”方法是什么? 例如,我目前在做: array1.each_with_index { |element, i|
我是一名优秀的程序员,十分优秀!