theFrame <- data.frame(col1=rnorm(100), col2=rnorm(100))
theVector <- 2:30
regFor <- function(dataFrame, aVector, iterations)
{
#set up a blank results matrix to save into.
results <- matrix(nrow=iterations, ncol=length(aVector))
for(i in 1:iterations)
{
#set up a blank road map to fill with 1s according to desired parameters
roadMap <- matrix(ncol=dim(dataFrame)[1], nrow=length(aVector), 0)
row.names(roadMap) <- aVector
colnames(roadMap) <- 1:dim(dataFrame)[1]
for(j in 1:length(aVector))
{
#sample some of the 0s and convert to 1s according to desired number of sample
roadMap[j,][sample(colnames(roadMap),aVector[j])] <- 1
}
temp <- apply(roadMap, 1, sum)
results[i,] <- temp
}
results <- as.data.frame(results)
names(results) <- aVector
results
}
test <- regFor(theFrame, theVector, 2)
trying <- function(dataFrame, aVector, iterations, cores)
{
registerDoMC(cores)
#set up a blank results list to save into. i doubt i need to do this
results <- list()
foreach(i = 1:iterations, .combine="rbind") %dopar%
{
#set up a blank road map to fill with 1s according to desired parameters
roadMap <- matrix(ncol=dim(dataFrame)[1], nrow=length(aVector), 0)
row.names(roadMap) <- aVector
colnames(roadMap) <- 1:dim(dataFrame)[1]
foreach(j = 1:length(aVector)) %do%
{
#sample some of the 0s and convert to 1s according to desired number of sample
roadMap[j,][sample(colnames(roadMap),aVector[j])] <- 1
}
results[[i]] <- apply(roadMap, 1, sum)
}
results
}
test2 <- trying(theFrame, theVector, 2, 2)
我认为无论如何我都必须在内循环上使用foreach,对吗?
当使用foreach时,您不会像您所怀疑的那样“设置一个空白的结果列表来保存”。相反,您将计算foreach循环主体的结果合并,并返回合并结果。在这种情况下,我们希望外部foreach循环将向量(由内部foreach循环计算)按行组合成一个矩阵。该矩阵被分配给变量results
,然后将其转换为数据帧。
以下是我第一次尝试转换您的示例:
library(doMC)
foreachVersion <- function(dataFrame, aVector, iterations, cores) {
registerDoMC(cores) # unusual, but reasonable with doMC
rows <- nrow(dataFrame)
cols <- length(aVector)
results <-
foreach(i=1:iterations, .combine='rbind') %dopar% {
# The value of the inner foreach loop is returned as
# the value of the body of the outer foreach loop
foreach(aElem=aVector, .combine='c') %do% {
roadMapRow <- double(length=rows)
roadMapRow[sample(rows,aElem)] <- 1
sum(roadMapRow)
}
}
results <- as.data.frame(results)
names(results) <- aVector
results
}
内部循环不需要实现为foreach循环。您也可以使用sapply
,但我会试着找出是否有更快的方法。但是对于这个答案,我想演示一个foreach方法。我使用的唯一真正的优化是通过在内部foreach循环中执行sum
来消除对apply
的调用。
这是我的代码。我遇到的问题是,我希望将HP在我的PHP代码中的数字转换为我的HP HTML代码,以及与Cylinder相同的内容。我已经想好了其他的东西,但说到这一部分我就卡住了
我有一个这样的数组 我想做的是前面的模型,为其数量绘制徽标,因此三星=3,索尼=7,以此类推,将绘制3个索尼徽标和7个三星徽标。 我想出了这样的办法 但是当然,所有这些都是为了每个数组条目,呼应出名称,所以我最终打印了5个三星,打印了5个索尼,等等。 如何使其使用 qty 数组的值而不是条目数?
我的代码有一个问题,它有两个嵌套的foreach循环: 所以我在“消息”中有2个条目,在“评论”中有4个条目,第一个条目为“消息”,第二个条目为2。我想要: 消息1-评论1-评论2 消息2-注释3-注释4 这就是我所拥有的: 消息1-评论1-评论2 消息2-注释1-注释2-注释3-注释4 我搜索了两个小时,在mysqli中没有找到解决方案:((当我找到时 mysqli_data_seek($com
我试图制作一个for循环脚本,使用Angular创建订单,并将其添加到网页中。我在使用某些for循环时遇到了问题,因为当我使用控制台时。log(),它只输出外部循环,不输出内部循环。我需要把变量的顺序传递给另一个函数,所以我需要这个顺序来获得正确的数据。 结果: 它重复最后一个外环值,而不输出内环值。我对Javascript还是很陌生的,所以我需要一些洞察力和解决方案,也许还有简单的方法?谢谢!
我正在寻找一种用函数式编程方法替换嵌套foreach循环的方法。情况是这样的: 目前我的代码是这样的: 这将生成如下所示的输出: 有谁知道如何用函数式编程替代方案替换foreach代码块?
问题内容: 我需要在Robot框架中创建一个嵌套循环。你能帮我吗? 我需要一个嵌套循环,将所有循环与文件中的所有循环进行比较。 提前致谢 问题答案: RF中没有嵌套循环;这只能通过在外部的内部循环调用一个关键字来完成。 不过,在您的特定情况下,可以不使用它-因为您想匹配整行,所以可以通过“应包含”来实现: 如果您要进行部分比赛-即成为会员的一部分,那么就不可能这样。