我遇到了以下问题
vec <- c("a11","b21","c31")
df <- data.frame(a = c(0,0,0), b = c(1,1,1), row.names = vec)
df["a",]
退货
df["a",]
a b
a11 0 1
然而
"a" %in% vec
和
"a" %in% rownames(df)
都返回False
当行名称使用字母后跟数字时,R允许字符串的部分匹配。我在R v3.2.2和R v3.2.1上复制了这一点。即使
df[["a",1,exact=T]]
返回0。
有没有什么我可以设置的,使得R不允许这种部分匹配?
2条答案
按热度按时间mccptt671#
奇怪,我都没意识到有部分匹配这回事。
除了直接索引到 Dataframe 之外,您还可以尝试分别识别与rowname完全匹配的记录,并根据结果构造索引向量,如下所示:
或者等价地(但更简洁地):
或者,如果将对象强制为data.table,则只返回完全匹配的对象:
5gfr0r5j2#
为什么不试试:
它将返回:
使用
grep
将为您提供额外的灵活性,例如,如果您希望匹配只有a的行名称: