我一直在尝试编写代码,允许我遍历列表中的项目,每个项目都是数值的向量。对于向量的元素满足某个标准,我想将这些数字附加到一个新的列表中,该列表还包含一个数值向量。
我的数据集结构如下:
Col1 Col2 Col3 .... Col29
-11 -10 -9 .... 15
-13 -12 -11 .... 14
到目前为止,我已尝试过以下代码:
new_list <- list()
for(i in 1:length(time_list)) {
for(j in 1:length(time_list[[i]]) {
if(!is.na(time_list[[i]][j]) & time_list[[i]][j] >= 0) {
# I am stuck here, as all the code I've run gives me an error.
}
}
}
我希望列表的结构与原始列表几乎相同,但只保留大于或等于0的数字。
非常感谢任何帮助。
答案 0 :(得分:1)
我会将您的数据df
称为
df <- structure(list(Time_1 = -13L, Time_2 = -12L, Time_3 = -11L, Time_4 = -10L,
Time_5 = -9L, Time_6 = -8L, Time_7 = -7L, Time_8 = -6L, Time_9 = -5L,
Time_10 = -4L, Time_11 = -3L, Time_12 = -2L, Time_13 = -1L, Time_14 = 0L,
Time_15 = 1L))
is.pos <- function(x){
(!is.na(x)) & (x >= 0)
}
该函数将检查我们是否正在处理正数并返回TRUE
或FALSE
。我们将其用于索引:
is.pos(df)
# Time_1 Time_2 Time_3 Time_4 Time_5 Time_6 Time_7 Time_8 Time_9 Time_10
# FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
# Time_11 Time_12 Time_13 Time_14 Time_15
# FALSE FALSE FALSE TRUE TRUE
df[is.pos(df)]
# $Time_14
# [1] 0
#
# $Time_15
# [1] 1
答案 1 :(得分:0)
从上面的陈述中,您似乎只想从列表中删除负值。如果是这种情况,那么为什么不尝试这样的事情:
grep -Pzo 'imports: \[(?:(?!SharedModule)[^]])*]'