我一直在寻找一个简单的并行使用ddply()的工作示例.我已经安装了"foreach"软件包,但是当我调用ddply(.parallel = TRUE)时,我收到一条警告:"没有并行后端注册"
有人可以提供一个简单的并行使用ddply的工作示例吗?
我猜这是重复的,但我找不到,所以这里...
我想首先返回第二个索引:
first = c( "a" , "c" , "b" )
second = c( "c" , "b" , "a" )
result = c( 2 , 3 , 1 )
Run Code Online (Sandbox Code Playgroud)
我保证第一个和第二个具有唯一值,并且两者之间具有相同的值.
我通常使用while循环继续尝试某些操作,直到操作成功或超时已经过去:
bool success = false
int elapsed = 0
while( ( !success ) && ( elapsed < 10000 ) )
{
Thread.sleep( 1000 );
elapsed += 1000;
success = ... some operation ...
}
Run Code Online (Sandbox Code Playgroud)
我知道有几种方法可以实现这一点,但基本的一点是,我反复尝试一些操作,一直睡到成功,或者我已经睡了太长时间.
是否有一个内置的.net类/方法/等,以免我在整个地方重写这个模式?也许输入是一个Func(bool)和超时?
编辑
感谢所有贡献者.我选择了sleep()方法,因为它是最不复杂的,我完全反复杂性=)这是我的(仍然需要测试)实现:
public static bool RetryUntilSuccessOrTimeout( Func<bool> task , TimeSpan timeout , TimeSpan pause )
{
if ( pause.TotalMilliseconds < 0 )
{
throw new ArgumentException( "pause must be >= 0 milliseconds" );
}
var stopwatch = Stopwatch.StartNew();
do
{
if ( task() ) …Run Code Online (Sandbox Code Playgroud) 如果我可以使用格式化字符串
string.Format("my {0} template {1} here", 1, 2)
Run Code Online (Sandbox Code Playgroud)
我可以反转过程 - 我提供模板和填充字符串,.net返回arg0,arg1等?
只要确认:如果我分发我[R包为ZIP/TAR然后安装程序包将不会自动下载/安装依赖,因为我必须设置repos = NULL在install.packages()和依赖参数未使用,如果repos = NULL?可能使其工作的方法是打包安装脚本.那可能吗?我在这里完全遗漏了一些东西,有一种机制可以从源代码安装并自动下载和安装依赖项吗?
使用DotNetZip,是否可以压缩文件,使得zip列出文件的文件名不同于磁盘上的文件名?例如,我想将myFile.txt添加到zip文件中,但我希望将其命名为otherFile.txt.
据R News for v2.14:
所有包都必须具有命名空间,如果源中未提供,则会在安装时创建一个.这意味着必须在此版本的R下重新安装任何没有命名空间的包(但仍然可以使用不带R代码的仅数据包).
我如何以编程方式检测2.13.x下安装的哪些软件包没有命名空间,以便知道需要更新哪些软件包?
有没有办法调用CreateProcess,以便杀死父进程自动杀死子进程?
也许使用Create Process Flags?
编辑
解决方案是创建作业对象,将父级和子级放在作业对象中.当父母被杀后,孩子被杀.我从这里得到了代码:
当父进程被杀死时杀死子进程
记下@wilx关于继承句柄的注释.
默认情况下(no .combine),foreach /%dopar%返回列表中的结果.列表中的结果顺序是否保证与循环/迭代的顺序相匹配?换句话说,顺序是否与顺序迭代时相同?或者,当并行任务完成时,列表是否会填充?浏览文档,我看到有一个.inorder参数,但它似乎只适用于使用.combine函数.
我在调用apply(data, 2, function(x) {...})哪里data是矩阵.有没有办法让函数知道其值存在的列的名称x?或许还有另一个功能来完成同样的任务?