我正在使用R的闪亮框架运行一个小型Web应用程序.该工具没有那么多.它只是过滤来自UI的给定参数的数据帧.我现在遇到的问题如下.如果用户通过http访问应用程序,则需要很长时间才能启动应用程序.因为我加载的数据global.R相当大(~5GB).初次启动后,应用程序运行顺畅,同时在给定时间内重新访问(应用程序似乎完全在内存中,持续几分钟).由于我有足够的可用内存,并且我的数据不会因用户交互而改变,我问自己是否可以将完整的应用程序保留在内存中.有可能强迫这个吗?我的服务器正在运行centOS 6.此外,问题不在于文件系统,硬盘等. - 我创建了一个ram磁盘来加载数据,但性能提升是微不足道的.所以在处理数据时,瓶颈似乎是R.
现在我有两个想法,可以解决这个问题.
愿你们中的一个人在加载更大的数据时有一些经验.如果可以进行讨论,我将感激不尽.如果可能的话,我想避免像Redis这样的外部软件尽可能地保持一切.
一切顺利,
马里奥
快速的问题.我的清单(在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)
谢谢和欢呼.
大家好,我正在处理大型列表,其中包含列表.每个子列表包含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问候,
马里奥
我想生成一个随机向量,包括[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)