考虑矩阵:
badcombos
[,1] [,2]
[1,] "Red" "Yellow"
[2,] "Green" "Yellow"
[3,] "Orange" "Yellow"
[4,] "Blue" "Green"
[5,] "Blue" "Purple"
然后,列表:
allcombos
[[1]]
[1] "Red" "Green" "Orange" "Pink" "Purple"
[[2]]
[1] "Red" "Red" "Brown" "Purple" "Pink"
[[3]]
[1] "Yellow" "Red" "Brown" "Blue" "Purple"
[[4]]
[1] "Yellow" "Green" "Blue" "Purple" "Gold"
....
[[k]] "Red" "Blue" "Orange" "Brown" "Pink
如果badcombos矩阵中的任何颜色组合出现在列表中(即上例中的子列表[[3]]和[[4]]),则将从列表中删除,我如何根据这些条件“减少”列表。
my_list = list()
my_list[[1]] = c("Red","Green","Orange","Pink","Purple")
my_list[[2]] = c("Red","Red","Brown","Purple","Pink")
my_list[[3]] = c("Yellow","Red","Brown","Blue","Purple")
my_list[[4]] = c("Yellow","Green","Blue","Purple","Gold")
my_list[[5]] = c("Red","Blue","Orange","Brown","Pink")
my_matrix = t(matrix(c("Red","Yellow","Green","Yellow","Orange","Yellow","Blue","Green","Blue","Purple"),2,5))
下面是使用%中的%检查“坏”列表中存在哪些值的一次尝试:
sel <- mapply(
function(a,b) all(rowSums(matrix(b %in% a,ncol=2))<2),
my_list, list(my_matrix)
)
#[1] TRUE TRUE FALSE FALSE TRUE
然后选择您想要的:
my_list[sel]
另一种方法是:
match_first_col <- lapply(my_list,match,my_matrix[,1])
match_second_col <- lapply(my_list,match,my_matrix[,2])
#Elements of the list that match both columns:
is.na(mapply(intersect, match_first_col,match_second_col))
[1] TRUE TRUE FALSE FALSE TRUE
#Keep only allcombos with no match in first and second column
my_list[is.na(mapply(intersect, match_first_col,match_second_col))]
[[1]]
[1] "Red" "Green" "Orange" "Pink" "Purple"
[[2]]
[1] "Red" "Red" "Brown" "Purple" "Pink"
[[3]]
[1] "Red" "Blue" "Orange" "Brown" "Pink"
我有以下问题: 我有一个矩阵。现在,我想在矩阵的每一行中删除一个条目:在包含某个数字(比如4)的行中,我想删除带有该数字的条目,在其他行中,我只想删除最后一个元素。 如果我有矩阵 这给了 2 0 4 0 删除后应该只是 2. 0 谢谢你的帮助!
问题内容: 我正在尝试从文本文件中读取文本,读取行,删除包含特定字符串的行(在这种情况下为“坏”和“顽皮”)。我写的代码是这样的: 我这样写,但没有成功。 重要的一件事是,如果文本的内容是这样的: 我不希望输出有空行。所以不喜欢: 但是像这样: 我应该从上面的代码中编辑什么? 问题答案: 您可以像这样使代码更简单,更易读 使用上下文管理器和任何。
我正在使用OpenCV一段时间,现在我需要这种类型的乘法: 定义一个矩阵,其中包含类型为1的元素。矩阵的大小为:M X N。矩阵必须与Vector相乘,Vector的大小为:N X 1,包含双
我是新的VBA和不是非常熟练的编程,所以我希望在这里得到一些帮助。 提前谢了。
我有一个包含元素的ArrayList(字段是name和type)。只有两种不同的可能类型(“edu”和“ent”),我希望每个类型都显示在自己的listview中。 我的想法是创建两个具有相同数据的新ArrayList,然后循环遍历每个并过滤不需要的元素,如下所示: ArrayList中有10个元素,每种类型5个。 问题是,在两个列表视图的末尾,有4个相同的项目以混合类型显示。 知道我做错了什么吗
我正在尝试删除此df中的所有行,其中“DB Serial”列包含字符*: 我正在使用: 但我得到这个错误: