r - 动态访问空列表或附加到现有列表
问题描述
我在访问动态形成的列表时遇到问题。
我正在尝试形成一个值列表,使得列表的第一个元素是 的第一个元素x
,并且在每次迭代中,如果列表的长度已经是 3 或者它已经包含 x 的任何元素,则形成一个列表的新元素。总共要进行 5 次。但是,下面循环的第一行for
不起作用,尽管我尝试了[[]]
和[]
(下面**中的部分)的不同组合 - 它一直告诉我我无法访问列表的元素。
我的代码如下:
x = c(1,2)
GROUP <- list()
j=1
k=1
for (i in 1:5) {
**GROUP[[k]][[j]] = i**
if (length(GROUP[[k]]) == 3 | (any(x %in% GROUP[[k]]))) {
k = k + 1
} else {
j = j + 1
}
}
预期的输出是
GROUP[[1]] = 1
GROUP[[2]] = 2
GROUP[[3]] = c(3,4,5)
我究竟做错了什么?
解决方案
不是最佳解决方案,但有效。我添加了额外的条件来检查是否[[k]]
存在。如果它已经存在,则i
附加。
x <- 1:2
GROUP <- list()
j <- 1
k <- 1
for (i in 1:5) {
# Check the length of current list
if (length(GROUP) < k) {
# Creates are new vector
GROUP[[length(GROUP) + 1]] <- i
} else {
# Appends to existing vector
GROUP[[k]] <- append(GROUP[[k]], i)
}
if (length(GROUP[[k]]) == 3 | any(x %in% GROUP[[k]])) {
k <- k + 1
} else {
j <- j + 1
}
}
推荐阅读
- javascript - 如何使用 lit html 在 Web 组件中使用 CSS“目标”选择器
- javascript - iframe 视频的替代图像
- css - 如何给出固定位置的摆动动画效果?
- python - Numpy:将行值广播到频道
- node.js - Installing node-sass errors with 'ELIFECYCLE'
- visual-studio - 如何使用 MSVC 构建工具从命令行构建 SLN 文件
- react-native - 使用 TouchableWithoutFeedback 反应本机 onPress 不起作用
- node.js - fetch post form with ref values
- django - 使用外键名称过滤 Django ViewSet
- javascript - 反应状态是否意味着在它定义的组件中使用?