使用 [[]] 时下标越界

3

我正在尝试使用以下代码模拟哈希映射,但在if语句中出现了索引越界的错误?

我不确定是什么原因导致这种情况,因为从循环中打印初始null值运行良好。

strings <- c("string1","string2","string3")

test <- NULL

for (i in 1:length(strings)) {
  print(is.null(test[[strings[i]]]))
  }

for (i in 1:length(strings)) {
  if (is.null(test[[strings[i]]])) {
    test[[strings[i]]] <- 1
    }
  }
1个回答

5

你可以将 test <- NULL 替换为将 test 初始化为一个列表:

test <- list()

这应该可以消除错误信息并得到所需的结果:
> test
#$string1
#[1] 1
#
#$string2
#[1] 1
#
#$string3
#[1] 1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接