Вы пробовали UNC-ресурс ?
\\server\share\foo.exe
Простите, что задаю потенциально глупый вопрос, но в каком смысле R не может этого сделать? У меня это прекрасно работает:
N <- 5
for (i in 0:(2*N)) {
for (j in i:N) {
print(paste(i,j,sep=","))
}
}
Может быть, вы просто не заключили скобки в конец своей последовательности?
Изменить: Ясно ... вы хотите, чтобы последовательность i: 3 всегда <= 3? Я не думаю, что это возможно ни с последовательностью, ни с предложением оператора for. Вы можете установить разрыв внутри цикла, но это не лучше, чем ваш текущий подход:
for (i in 1:6) {
for (j in i:3) {
if(j > 3) break()
print(paste(i,j,sep=","))
}
}
Вот еще один способ сгенерировать эту последовательность без цикла for:
x <- cbind(rep(c(1,2,3), 3),
rep(c(1,2,3), each=3))
Или с помощью expand.grid (согласно предложению Дирка):
x <- expand.grid(x=1:3, y=1:3)
Затем удалите нежелательные случаи:
x[x[,1] >= x[,2],]
Edit 2: Это может не соответствовать вашим потребностям, но я считаю, что Quantlib имеет реализацию модели рынка Libor. Я не уверен, что он представлен в RQuantlib .
N <- 5
for (i in 0:(2*N)) {
for (j in i:N) {
print(paste(i,j,sep=","))
}
}
Может быть, вы просто не заключили скобки в конце своей последовательности?
Редактировать: Ясно ... вы хотите, чтобы последовательность i: 3 всегда была <= 3? Я не думаю, что это возможно ни с последовательностью, ни с предложением оператора for. Вы можете установить разрыв внутри цикла, но это не лучше, чем ваш текущий подход:
for (i in 1:6) {
for (j in i:3) {
if(j > 3) break()
print(paste(i,j,sep=","))
}
}
Вот еще один способ сгенерировать эту последовательность без цикла for:
x <- cbind(rep(c(1,2,3), 3),
rep(c(1,2,3), each=3))
Или с помощью expand.grid (согласно предложению Дирка):
x <- expand.grid(x=1:3, y=1:3)
Затем удалите нежелательные случаи:
x[x[,1] >= x[,2],]
Редактировать 2: Это может не соответствовать вашим потребностям, но я считаю, что Quantlib имеет реализацию модели рынка Libor. Я не уверен, что он представлен в RQuantlib .
N <- 5
for (i in 0:(2*N)) {
for (j in i:N) {
print(paste(i,j,sep=","))
}
}
Может быть, вы просто не заключили скобки в конце своей последовательности?
Редактировать: Понятно ... вы хотите, чтобы последовательность i: 3 всегда была <= 3? Я не думаю, что это возможно ни с последовательностью, ни с предложением оператора for. Вы можете установить разрыв внутри цикла, но это не лучше, чем ваш текущий подход:
for (i in 1:6) {
for (j in i:3) {
if(j > 3) break()
print(paste(i,j,sep=","))
}
}
Вот еще один способ сгенерировать эту последовательность без цикла for:
x <- cbind(rep(c(1,2,3), 3),
rep(c(1,2,3), each=3))
Или с помощью expand.grid (согласно предложению Дирка):
x <- expand.grid(x=1:3, y=1:3)
Затем удалите нежелательные случаи:
x[x[,1] >= x[,2],]
Edit 2: Это может не соответствовать вашим потребностям, но я считаю, что Quantlib имеет реализацию модели рынка Libor. Я не уверен, что он представлен в RQuantlib .
вы хотите обеспечить, чтобы последовательность i: 3 всегда была <= 3? Я не думаю, что это возможно ни с последовательностью, ни с предложением оператора for. Вы можете установить разрыв внутри цикла, но это не лучше, чем ваш текущий подход:for (i in 1:6) {
for (j in i:3) {
if(j > 3) break()
print(paste(i,j,sep=","))
}
}
Вот еще один способ сгенерировать эту последовательность без цикла for:
x <- cbind(rep(c(1,2,3), 3),
rep(c(1,2,3), each=3))
Или с помощью expand.grid (согласно предложению Дирка):
x <- expand.grid(x=1:3, y=1:3)
Затем удалите нежелательные случаи:
x[x[,1] >= x[,2],]
Редактировать 2: Это может не соответствовать вашим потребностям, но я считаю, что Quantlib имеет реализацию модели рынка Libor. Я не уверен, выставлен ли он в RQuantlib .
вы хотите обеспечить, чтобы последовательность i: 3 всегда была <= 3? Я не думаю, что это возможно ни с последовательностью, ни с предложением оператора for. Вы можете установить разрыв внутри цикла, но это не лучше, чем ваш текущий подход:for (i in 1:6) {
for (j in i:3) {
if(j > 3) break()
print(paste(i,j,sep=","))
}
}
Вот еще один способ сгенерировать эту последовательность без цикла for:
x <- cbind(rep(c(1,2,3), 3),
rep(c(1,2,3), each=3))
Или с помощью expand.grid (согласно предложению Дирка):
x <- expand.grid(x=1:3, y=1:3)
Затем удалите нежелательные случаи:
x[x[,1] >= x[,2],]
Редактировать 2: Это может не соответствовать вашим потребностям, но я считаю, что Quantlib имеет реализацию модели рынка Libor. Я не уверен, выставлен ли он в RQuantlib .
for (i in 1:6) {
for (j in i:3) {
if(j > 3) break()
print(paste(i,j,sep=","))
}
}
Вот еще один способ сгенерировать эту последовательность без цикла for:
x <- cbind(rep(c(1,2,3), 3),
rep(c(1,2,3), each=3))
Или с помощью expand.grid (согласно предложению Дирка):
x <- expand.grid(x=1:3, y=1:3)
Затем удалите нежелательные случаи:
x[x[,1] >= x[,2],]
Редактировать 2: Это может не соответствует вашим потребностям, но я считаю, что Quantlib имеет реализацию модели рынка Libor. Я не уверен, что он представлен в RQuantlib .
for (i in 1:6) {
for (j in i:3) {
if(j > 3) break()
print(paste(i,j,sep=","))
}
}
Вот еще один способ сгенерировать эту последовательность без цикла for:
x <- cbind(rep(c(1,2,3), 3),
rep(c(1,2,3), each=3))
Или с помощью expand.grid (согласно предложению Дирка):
x <- expand.grid(x=1:3, y=1:3)
Затем удалите нежелательные случаи:
x[x[,1] >= x[,2],]
Редактировать 2: Это может не соответствует вашим потребностям, но я считаю, что Quantlib имеет реализацию модели рынка Libor. Я не уверен, выставлен ли он в RQuantlib .
Конечно, вы можете вкладывать циклы:
R> for (i in 1:3) for (j in 1:3) cat(i,j,i*j, "\n")
1 1 1
1 2 2
1 3 3
2 1 2
2 2 4
2 3 6
3 1 3
3 2 6
3 3 9
R>
Существует общее мнение, что вы не должны поскольку векторизованные вызовы легче читать и писать:
R> outer(1:3,1:3, "*")
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 2 4 6
[3,] 3 6 9
R>
, но если проще разработать с помощью связанных циклов, сделайте это.
Что касается проблемы «второй индекс, зависящий от первого индекса», вы можете использовать более низкий. tri (), upper.tri () или индексирование для достижения этой цели.
R> X <- expand.grid(x=1:3, y=1:3)
R> X <- X[ X$x >= X$y, ]
R> outer(X$x, X$y, "*")
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 1 1 1 2 2 3
[2,] 2 2 2 4 4 6
[3,] 3 3 3 6 6 9
[4,] 2 2 2 4 4 6
[5,] 3 3 3 6 6 9
[6,] 3 3 3 6 6 9
R>
Проблема в том, что i: 3
имеет смысл, когда i> 3
. Например, 5: 3
дает (5,4,3)
. Все, что вам нужно, это простой оператор if, чтобы предотвратить запуск второго цикла, когда i> 3
.
for (i in 1:6) {
if(i < 4) {
for (j in i:3) {
print(paste(i,j,sep=","))
}
}
# Do more operations for i > 3...
}
Однако, если возможно, постарайтесь избежать явного цикла. Ответы Дирка и Шейна дают некоторые идеи, как это сделать.