我正在使用R中的一个大整数向量(大约1000万个整数),我需要从这个向量中找到每个不同的整数对,它们相差500或更少,并得出它们之间差异的直方图(即对于每对,第二个减去第一个).
这是完全未实现的代码,可以非常缓慢地执行我想要的操作:
# Generate some random example data
V <- round(rnorm(100) * 1000)
# Prepare the histogram
my.hist <- rep(0, 500)
names(my.hist) <- as.character(seq(1,500))
for (x1 in V) {
for (x2 in V) {
difference = x2 - x1
if (difference > 0 && difference <= 500) {
my.hist[difference] = my.hist[difference] + 1
}
}
}
Run Code Online (Sandbox Code Playgroud)
(假设每个整数都是唯一的,因此该difference > 0位是正确的.这是允许的,因为我实际上并不关心差异为零的任何情况.)
这是一些矢量化内循环的代码:
my.hist2 <- rep(0, 500)
names(my.hist2) <- as.character(seq(1,500))
for (x1 in V) {
differences <- V[V > x1 & …Run Code Online (Sandbox Code Playgroud) 我对以下的复杂性感到困惑(在内部循环内执行的操作是在恒定时间内):
for(int i=0; i<n; i++)
for(int j=i; j<n; j++)
Run Code Online (Sandbox Code Playgroud)
这是O(n ^ 2)还是O(n)?我想O(n ^ 2).有任何想法吗?
以下内容让我很好奇:
for(int i=0; i<n; i++)
for(j=0; j<i; j++)
Run Code Online (Sandbox Code Playgroud) 可能重复:
突破嵌套循环
如何从特定级别的嵌套循环中退出.例如:
foreach (item in Items)
{
foreach (item2 in Items2)
{
// Break; => we just exit the inner loop
// while we need to break both loops.
}
}
Run Code Online (Sandbox Code Playgroud)
如果有更多的嵌套循环,我们想从内部退出第N个循环.像break(2)上面的例子那样打破了两个循环.
在这篇文章之后,我想要并行化这个方法:
public IEnumerable<string> GetAllLogs(IEnumerable<IComputer> computers)
{
foreach (var cpt in computers)
{
foreach (var log in cpt.GetLogs())
{
yield return log;
}
}
}
Run Code Online (Sandbox Code Playgroud)
当其中一个方法GetLogs完成时,我希望方法"yield returns"成为日志.如果我有4台电脑返回:
使用"顺序方法",输出为:
a
b
c
d
e
1
2
3
4
5
alpha
beta
gamma
delta
epsilon
I
II
III
IV
V
Run Code Online (Sandbox Code Playgroud)
这些方法在20秒内运行.有一个Thread.Sleep(1000)在GetLogs方法.
我希望输出看起来像这样:
III
a
4
gamma
b
c
IV
5
d
II
beta
e
1
2
delta
alpha
3
epsilon
I
Run Code Online (Sandbox Code Playgroud)
并在几秒钟内运行.
我想方法返回一个IEnumerable
请问有人请使用生成器解释嵌套循环的行为吗?这是一个例子.
a = (x for x in range(3))
b = (x for x in range(2))
for i in a:
for j in b:
print (i,j)
Run Code Online (Sandbox Code Playgroud)
由于某种原因,在第一次迭代后不评估外部循环.结果是,
(0, 0)
(0, 1)
Run Code Online (Sandbox Code Playgroud)
另一方面,如果将生成器直接插入到循环中,它就能达到我的预期.
for i in (x for x in range(3)):
for j in (x for x in range(2)):
print (i,j)
Run Code Online (Sandbox Code Playgroud)
给所有3x2对.
(0, 0)
(0, 1)
(1, 0)
(1, 1)
(2, 0)
(2, 1)
Run Code Online (Sandbox Code Playgroud) 我有一个列为6列37行的列联表数据矩阵.我需要应用Chi平方变换来给出行轮廓和柱轮廓以进行对应分析.
不幸的是,我被告知我将需要使用嵌套循环来转换数据并执行CA(而不是在R中使用更合理的方式).我得到了用于嵌套循环的结构:
transformed.data=data0
for (row.index in 1:nrow(data)) {
for (col.index in 1:ncol(data)) {
transfomed.data[row.index,col.index]=
"TRANSFORMATION"[row.index,col.index]
}
}
Run Code Online (Sandbox Code Playgroud)
根据我的理解,通过使用嵌套循环,它将首先将"TRANSFORMATION"应用于行,然后应用于列.
我想要对数据进行的转换以获取行配置文件:
( X(ij)/ sum(X(i)))/sqrt(sum(X(j)))
虽然我想要对数据进行的转换以获得列配置文件:
( X(ij)/ sum(X(j)))/sqrt(sum(X(i)))
我将在嵌套循环的最后一行输入什么作为我的"TRANSFORMATION",以便输出我想要的配置文件转换.否则,如果我错过了解嵌套循环的要点,请描述它允许我做什么.
这是我的数据子集的代码:
matrix(c(15366,2079,411,366,23223,2667,699,819,31632,2724,717,1473,49938,3111,1062,11964)
,nrow=4,ncol=4,byrow=T)
Run Code Online (Sandbox Code Playgroud)
所以单独使用这个子集我会期望第一行的行配置文件是:
0.002432689 0.0003291397 6.506803e-05 5.794379e-05
Run Code Online (Sandbox Code Playgroud)
并且第一列的列配置文件为:
0.0009473414, 0.0132572344, 0.0572742202, 0.0132863528
Run Code Online (Sandbox Code Playgroud) 当有嵌套循环时,有人能告诉我如何打破主循环吗?
例*:
/*Main loop*/
for(int y = 0; y < 100; y+=10)
{
/*Sub loop*/
for (int x = 0; x < 100; x += 10)
{
if(x == 60)
{
//Break the main loop
}
}
}
Run Code Online (Sandbox Code Playgroud)
*这段代码什么都不做,这只是一个例子
我应该把它放在"Break main loop"评论的位置?在java中有标签,我可以打破(当我将标签设置为名为"MainLoop"的主循环时,我可以写"break MainLoop;"并且它将是有效的),但我能在这做什么?
谢谢你的建议!
我想知道为什么即使使用显式退出命令,此脚本仍继续运行.
我有两个文件:
file1.txt 具有以下内容:
aaaaaa bbbbbb cccccc dddddd eeeeee ffffff gggggg
file2.txt 具有以下内容:
111111 aaaaaa 222222 333333 ffffff 444444
script(test.sh)就是这样,两个嵌套循环检查第一个文件的任何行是否包含第二个文件的任何行.如果找到匹配项,则会中止.
#!/bin/bash
path=`dirname $0`
cat $path/file1.txt | while read line
do
echo $line
cat $RUTA/file2.txt | while read another
do
if [ ! -z "`echo $line | grep -i $another`" ]; then
echo "!!!!!!!!!!"
exit 0
fi
done
done
Run Code Online (Sandbox Code Playgroud)
我得到以下输出,即使在打印第一个后它应该退出!!!!!!!!!!:
aaaaaa !!!!!!!!!! bbbbbb cccccc dddddd eeeeee ffffff !!!!!!!!!! gggggg
是不是exit应该完全结束脚本的执行?
我正在尝试使用for循环和嵌套for循环制作圣诞树.对我来说,我需要能够用*制作金字塔.我已经尝试了无数次,但我遇到了问题.这是我的代码:
for(int i=1;i<=10;i++){
for(int j=10;j>i;j--){
System.out.println(" ");
}
for(int k=1;k<=i;k++){
System.out.print("*");
}
for(int l=10;l<=1;l++){
for(int h=1;h<=10;h++){
System.out.print(" ");
}
}
System.out.println();
}
Run Code Online (Sandbox Code Playgroud)
我想要做的是:
*
***
*****
*******
Run Code Online (Sandbox Code Playgroud) 我正在使用高级自定义字段(ACF)从事件页面提取转发器信息,并在主页上显示事件的缩短列表.
我已经设置了一个转发器,允许用户输入事件发生的月份(允许它们放入多个月的事件),然后是子转发器,允许它们为给定的月份添加多个事件.示例如下:
游行
四月
这是事件页面上的当前输出,它按预期工作.
在网站的主页上,我需要将最新的3个事件(列表底部的事件是最新事件)拉出来并显示在主页上.
我在主页上拉动和显示事件时没有问题.我遇到的问题是显示最后三个事件(子转发器)在月份之间交叉的事件(父转发器).
简单地使用跨越if,while,语句的php循环限制事件输出仅限制该月输出的事件数.我目前在主页上使用的代码如下.
<?php if( have_rows('event_month', 1263)): ?>
<ul>
<?php while ( have_rows('event_month', 1263) ) : the_row(); ?>
<?php if( have_rows('event', 1263)):; ?>
<?php while ( have_rows('event', 1263) ) : the_row(); ?>
<li>
<h3>
<a href="<?php echo esc_url( home_url( '/' ) ); ?>events/"><?php $summary = get_sub_field('event_title');
echo substr($summary, 0, 34),'...'; ?></a>
<span><?php the_sub_field('event_day_of_week');?>, <?php the_sub_field('event_sub_month');?> <?php the_sub_field('event_day');?></span>
</h3>
</li>
<?php endwhile; ?>
<?php else: ?>
<p>Show dates to be announced …Run Code Online (Sandbox Code Playgroud)