我有两个向量,A和B.对于A我想要找到的第一个元素的索引中的每个元素B都更大并且具有更高的索引.长度A和B是一样的.
所以对于矢量:
A <- c(10, 5, 3, 4, 7)
B <- c(4, 8, 11, 1, 5)
Run Code Online (Sandbox Code Playgroud)
我想要一个结果向量:
R <- c(3, 3, 5, 5, NA)
Run Code Online (Sandbox Code Playgroud)
当然我可以用两个循环来做,但它很慢,我不知道如何在这种情况下使用apply(),当索引很重要时.我的数据集具有长度为20000的向量,因此在这种情况下速度非常重要.
一些奖金问题:
如果我有一个数字序列(比如seq = 2:10),我想找到第一个数字,B对于每个A和每个seq,都高于+ s.
与问题1)一样,但我想知道第一个更大的值和第一个更低的值,并创建一个矩阵,它存储哪一个是第一个.所以例如我有一个A,和seq的10.我想找到第一个值B,它高于+ 10,或低于-10,然后存储它的索引和值.
我想将游戏逻辑和渲染分成两个不同的循环,因为我不希望fps控制游戏速度.我尝试通过为渲染创建CADisplayLink以及为游戏逻辑创建NSTimer来实现此目的.但后来发生了一件奇怪的事:
有时候(15个应用程序运行中有1个)游戏以非常低的fps(大约5-10)运行,但其余时间它完全平滑.如果我删除游戏逻辑的NSTimer并将两个循环结合起来,则fps一直很高,但这显然不是一个可接受的解决方案.所以看起来有时两个计时器"相互推迟"或类似的东西,但我并不完全理解runloops的内部工作.
这是我创建计时器和displaylink的方法:
NSTimer *gameTimer = [[NSTimer alloc] initWithFireDate:[NSDate date] interval:1.0 / 60.0 target:self selector:@selector(gameTimerFired:) userInfo:nil repeats:YES];
[[NSRunLoop mainRunLoop] addTimer:gameTimer forMode:NSDefaultRunLoopMode];
[gameTimer release];
CADisplayLink *aDisplayLink = [[UIScreen mainScreen] displayLinkWithTarget:self selector:@selector(drawFrame)];
[aDisplayLink setFrameInterval:animationFrameInterval];
[aDisplayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
self.displayLink = aDisplayLink;
Run Code Online (Sandbox Code Playgroud)
你能告诉我导致fps问题的原因以及解决方法吗?
或者你能推荐任何其他解决方案来分离渲染和游戏逻辑循环吗?
我有一个具有列表输出的函数.每次运行它,我都想用save导出结果.几次运行后,我想读取文件并比较结果.我这样做,因为我不知道将会有多少任务,也许我将使用不同的计算机来计算每项任务.那么我应该如何命名存档的对象,以后我可以全部阅读它们?
我最好的猜测是在保存之前动态命名变量,并跟踪对象名称,但我到处都读到这是一个很大的禁忌.
那我该怎么办呢?