小编mar*_*eng的帖子

R Shiny in Memory Application或noSQL

我正在使用R的闪亮框架运行一个小型Web应用程序.该工具没有那么多.它只是过滤来自UI的给定参数的数据帧.我现在遇到的问题如下.如果用户通过http访问应用程序,则需要很长时间才能启动应用程序.因为我加载的数据global.R相当大(~5GB).初次启动后,应用程序运行顺畅,同时在给定时间内重新访问(应用程序似乎完全在内存中,持续几分钟).由于我有足够的可用内存,并且我的数据不会因用户交互而改变,我问自己是否可以将完整的应用程序保留在内存中.有可能强迫这个吗?我的服务器正在运行centOS 6.此外,问题不在于文件系统,硬盘等. - 我创建了一个ram磁盘来加载数据,但性能提升是微不足道的.所以在处理数据时,瓶颈似乎是R.

现在我有两个想法,可以解决这个问题.

  • 正如我所提到的,是否有可能将完整的应用程序保留在内存中?
  • 不要将数据保存为R对象,而是使用快速的noSQL DB,例如内存中的Redis

愿你们中的一个人在加载更大的数据时有一些经验.如果可以进行讨论,我将感激不尽.如果可能的话,我想避免像Redis这样的外部软件尽可能地保持一切.

一切顺利,

马里奥

r nosql in-memory-database redis shiny

7
推荐指数
1
解决办法
456
查看次数

R,从键值获取键(哈希)

快速的问题.我的清单(在R中)看起来像:

> mylist
$width
[1] 32
Run Code Online (Sandbox Code Playgroud)

使用mylist [1]我得到:

$width
[1] 32
Run Code Online (Sandbox Code Playgroud)

但我怎么得到:

$width
Run Code Online (Sandbox Code Playgroud)

谢谢和欢呼.

hash r

6
推荐指数
1
解决办法
1万
查看次数

R快速从List列表中提取元素的方法

大家好,我正在处理大型列表,其中包含列表.每个子列表包含n个元素.我总是希望获得第三名,例如

l = list()
l[[1]] = list(A=runif(1), B=runif(1), C=runif(1))
l[[2]] = list(A=runif(1), B=runif(1), C=runif(1))
l[[3]] = list(A=runif(1), B=runif(1), C=runif(1))

res = sapply(l, function(x) x$C)
res = sapply(l, function(x) x[[3]]) #alternative
Run Code Online (Sandbox Code Playgroud)

但我的列表包含数千个元素,我正在执行此操作很多次.那么,上面的操作有更快的方法吗?

Beste问候,

马里奥

r list

3
推荐指数
1
解决办法
1505
查看次数

每次调用的新随机向量

我想生成一个随机向量,包括[min,max]范围内的n个元素,这对于mersenne twister和我的代码可以正常工作.

显然,每次调用我的rand_vec函数时,我都会得到相同的输出.但是每次调用它时我都需要随机函数来返回不同的结果.此外,整个过程需要播种,每次执行时输出必须相同.所以,在我的功能中播种twister std::random_device似乎不是一个选择.

此外,这个随机函数从我的程序的几个子程序调用:

#include <iostream>
#include <vector>
#include <random>

std::vector<int> rand_vec(int n, int min, int max, std::mt19937 mt){

    std::vector<int> to_return(n);
    std::uniform_int_distribution<> my_dist(min, max);
    for(int i = 0; i < n; i++){
        to_return[i] = my_dist(mt);
    }
    return(to_return);
}

int main()
{
    std::vector<int> to_print(5);

    std::mt19937 mt;
    mt = std::mt19937(100);

    to_print = rand_vec(5, 0, 10, mt);
    for(int i = 0; i < 5; i++){
        std::cout << to_print[i] << " ";
    }

    std::cout << "\n\n";

    to_print = rand_vec(5, 0, …
Run Code Online (Sandbox Code Playgroud)

c++ random mersenne-twister

0
推荐指数
1
解决办法
118
查看次数

标签 统计

r ×3

c++ ×1

hash ×1

in-memory-database ×1

list ×1

mersenne-twister ×1

nosql ×1

random ×1

redis ×1

shiny ×1