R:遍历列表
R: Iterating Over the List
我正在尝试在 R 中实现以下算法:
Iterate(Cell: top)
While (top != null)
Print top.Value
top = top.Next
End While
End Iterate
基本上,给定一个列表,即使列表尚未结束,算法也应该在到达 'null' 时立即中断。
myls<-list('africa','america south','asia','antarctica','australasia',NULL,'europe','america north')
我不得不添加一个 for 循环来使用 is.null() 函数,但下面的代码是灾难,我需要你的帮助来修复它。
Cell <- function(top) {
#This algorithm examines every cell in the linked list, so if the list contains N cells,
#it has run time O(N).
for (i in 1:length(top)){
while(is.null(top[[i]]) !=TRUE){
print(top)
top = next(top)
}
}
}
您可以运行此函数使用:
Cell(myls)
你很接近,但没有必要在这里使用 for(...)
施工。
Cell <- function(top){
i = 1
while(i <= length(top) && !is.null(top[[i]])){
print(top[[i]])
i = i + 1
}
}
如您所见,我在 while
循环中添加了一个额外条件:i <= length(top)
这是为了确保您不会超出
列出以防没有空项。
但是你可以使用一个 for
循环与这个结构:
Cell <- function(top){
for(i in 1:length(top)){
if(is.null(top[[i]])) break
print(top[[i]])
}
}
或者,您可以在没有 for
/while
结构的情况下使用此代码:
myls[1:(which(sapply(myls, is.null))[1]-1)]
检查一下:它对 myls 中的所有值一一运行并打印它们,但如果遇到 NULL 值,它就会中断。
for (val in myls) {
if (is.null(val)){
break
}
print(val)
}
如有任何疑问,请告诉我。
我正在尝试在 R 中实现以下算法:
Iterate(Cell: top)
While (top != null)
Print top.Value
top = top.Next
End While
End Iterate
基本上,给定一个列表,即使列表尚未结束,算法也应该在到达 'null' 时立即中断。
myls<-list('africa','america south','asia','antarctica','australasia',NULL,'europe','america north')
我不得不添加一个 for 循环来使用 is.null() 函数,但下面的代码是灾难,我需要你的帮助来修复它。
Cell <- function(top) {
#This algorithm examines every cell in the linked list, so if the list contains N cells,
#it has run time O(N).
for (i in 1:length(top)){
while(is.null(top[[i]]) !=TRUE){
print(top)
top = next(top)
}
}
}
您可以运行此函数使用:
Cell(myls)
你很接近,但没有必要在这里使用 for(...)
施工。
Cell <- function(top){
i = 1
while(i <= length(top) && !is.null(top[[i]])){
print(top[[i]])
i = i + 1
}
}
如您所见,我在 while
循环中添加了一个额外条件:i <= length(top)
这是为了确保您不会超出
列出以防没有空项。
但是你可以使用一个 for
循环与这个结构:
Cell <- function(top){
for(i in 1:length(top)){
if(is.null(top[[i]])) break
print(top[[i]])
}
}
或者,您可以在没有 for
/while
结构的情况下使用此代码:
myls[1:(which(sapply(myls, is.null))[1]-1)]
检查一下:它对 myls 中的所有值一一运行并打印它们,但如果遇到 NULL 值,它就会中断。
for (val in myls) {
if (is.null(val)){
break
}
print(val)
}
如有任何疑问,请告诉我。