我可能错过了一些很简单的东西。我有一个向量列表,然后将其用作列名。现在我希望能够找到给定向量的哪一列(索引)。我尝试了grep和match,由于某种原因,当我知道这是第一列时,我得到了NA和integer(0),这是我在查看数据帧时看到的。我做错了什么?下面的代码:
#Loops to create S
S <- list()
i <- 1
for(a in 0:12){
for(b in 0:(12-a)){
for(c in 0:(12-a-b)){
for(d in 0:(12-a-b-c)){
e <- 12 - a - b - c - d
S[[i]] <- c(a, b, c, d, e)
i <- i + 1
}
}
}
}
P <- matrix(data = NA, nrow = length(S), ncol = length(S))
for(i in 1:length(S)){
for(j in 1:length(S)){
#lots of stuff
}
}
#Rename P matrix cols/rows
colnames(P) <- S
rownames(P) <- S
#Now I want to find which column has the name "c(0,0,0,0,12)" -- should be first one. I tried:
grep("c(0, 0, 0, 0, 12)", colnames(P))
match('c(0, 0, 0, 0, 12)', names(P))
谢谢你。
您的match
尝试的唯一问题是使用了names(P)
,并且没有为矩阵定义names()
。使用colnames
或rownames
,它将按预期工作:
match("c(0, 0, 0, 0, 12)", colnames(P))
# [1] 1
match("c(1, 5, 4, 0, 2)", colnames(P))
# [1] 758
您的grep
尝试不起作用,因为()
是regex中的特殊字符。如果转义括号或设置fixed=true
,则可以使用grep
,但不应该真正使用grep
进行完全的字符串匹配-match
或==
或%in%
是更好的工具。保存grep
以便在需要通过正则表达式进行部分匹配或模式匹配时使用。
我有一个人名向量列表,每个向量只有名字和姓氏,我有另一个向量列表,每个向量有名字的第一个,中间的,姓氏。我需要匹配这两个列表,以找到包含在这两个列表中的人。因为名称不是按顺序排列的(有些向量以名字作为第一个值,而有些向量以姓氏作为第一个值),所以我想通过查找第二个列表中的哪个向量(全名)包含第一个列表中某个向量的所有值(只有名字和姓氏)来匹配这两个向量。 到目前为止我所做的: 首先,我尝试创建一个
我有一个函数,它返回R中的如下向量 因为它是一个命名的向量,所以我不能在它上面测试下面的内容 is.na() is.null 相同(vec,字符(0) 如何对其编写测试以检查它是否是命名字符(0)向量,然后将其分配给空值?
本文向大家介绍如何在R中将矩阵列转换为向量列表?,包括了如何在R中将矩阵列转换为向量列表?的使用技巧和注意事项,需要的朋友参考一下 如果要使用矩阵的列作为向量,则可以将它们转换为向量列表。要将矩阵列转换为向量列表,我们首先需要将矩阵转换为数据框,然后才能将其读取为列表。这可以作为as.list(as.data.frame(matrix_name))完成。 示例 考虑下面的矩阵- 将矩阵M列转换为向
如果每行的“b”或“c”匹配(等于)“a”,我正在尝试在新列“结果”中打印列名。 这是一个例子,我有10多个列名。 我的df是这样的: 预期结果:
本文向大家介绍如何通过R中data.table中的列名删除列?,包括了如何通过R中data.table中的列名删除列?的使用技巧和注意事项,需要的朋友参考一下 我们可以通过将列设置为NULL来实现 示例 删除一列x 删除两列
问题内容: 这个问题已经在这里有了答案 : 8年前关闭。 可能重复: Python:如何查找列表交集? 我在.txt中有两个数据列表 我想找出在两个列表中都出现的名字。我该怎么做? 问题答案: 使用集: 该运营商表示“给我这两个集合的交集” 或者,您可以使用以下方法: