在 r 中全局访问局部变量
Accesiing local variables globally in r
我想访问我在函数中声明的变量并在全局 for 循环中使用它。在我的示例中,我想在 for 循环外全局访问变量 r anr1 那些在函数 val
中声明的变量和 val_all
。这里只会给出最后 10 次迭代的 r 值。
任何人都可以帮助..??
g <- graph.ring(10)
V(g)$name <- LETTERS[1:10]
LETTERS[1:10]
val=function(g,i,j)
{
r=get.shortest.paths(g, i,j ,mode = "out")
return(r)
}
val_all=function(r)
{
r1 <- V(g)[r$vpath[[1]]]
return(r1)
}
for (i in 1:10)
{
for(j in 2:10)
{
r=val(g ,i,j)
print(r[[1]])
r1 = val_all(r)
print(r1)
}
}
print(r[[1]])
您似乎想将每次迭代的结果存储在一个列表中:
loop_results <- list()
for (i in 1:10) {
loop_results[i] <- list(NULL)
for(j in 2:10) {
r=val(g ,i,j)
print(r[[1]])
r1 = val_all(r)
print(r1)
loop_results[[i]][[j]] <- list(r=r, r1=r1)
}
}
# To access the results, now we use loop_results[[i]][[j]][["r"]] for
# each iteration i and j
print(loop_results[[1]][[2]][["r"]])
您需要添加双“<<”以存储在父环境中(在您的情况下,您看到的是 "Global")。
variable_in_function<<-"stored outside"
为什么不直接使用函数,从所有顶点开始?
r <- get.shortest.paths(g, from=V(g))
那么您将拥有 r$vpath[[1]]
、r$vpath[[2]]
等
中的所有信息
编辑:我认为这只会为您提供第一个顶点的路径。您可以尝试以下方法:
r <- vector('list', length=10)
for (i in 1:10) {
r[[i]] <- shortest_paths(g, from=i)
}
我想访问我在函数中声明的变量并在全局 for 循环中使用它。在我的示例中,我想在 for 循环外全局访问变量 r anr1 那些在函数 val
中声明的变量和 val_all
。这里只会给出最后 10 次迭代的 r 值。
任何人都可以帮助..??
g <- graph.ring(10)
V(g)$name <- LETTERS[1:10]
LETTERS[1:10]
val=function(g,i,j)
{
r=get.shortest.paths(g, i,j ,mode = "out")
return(r)
}
val_all=function(r)
{
r1 <- V(g)[r$vpath[[1]]]
return(r1)
}
for (i in 1:10)
{
for(j in 2:10)
{
r=val(g ,i,j)
print(r[[1]])
r1 = val_all(r)
print(r1)
}
}
print(r[[1]])
您似乎想将每次迭代的结果存储在一个列表中:
loop_results <- list()
for (i in 1:10) {
loop_results[i] <- list(NULL)
for(j in 2:10) {
r=val(g ,i,j)
print(r[[1]])
r1 = val_all(r)
print(r1)
loop_results[[i]][[j]] <- list(r=r, r1=r1)
}
}
# To access the results, now we use loop_results[[i]][[j]][["r"]] for
# each iteration i and j
print(loop_results[[1]][[2]][["r"]])
您需要添加双“<<”以存储在父环境中(在您的情况下,您看到的是 "Global")。
variable_in_function<<-"stored outside"
为什么不直接使用函数,从所有顶点开始?
r <- get.shortest.paths(g, from=V(g))
那么您将拥有 r$vpath[[1]]
、r$vpath[[2]]
等
编辑:我认为这只会为您提供第一个顶点的路径。您可以尝试以下方法:
r <- vector('list', length=10)
for (i in 1:10) {
r[[i]] <- shortest_paths(g, from=i)
}