gpt4 book ai didi

R 返回行名称的部分匹配

转载 作者:行者123 更新时间:2023-12-02 10:23:11 27 4
gpt4 key购买 nike

我遇到了以下问题

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 不允许这种部分匹配吗?

最佳答案

奇怪,甚至没有意识到部分匹配是一件事。

您可以尝试单独识别与 rowname 完全匹配的记录,并根据结果构建索引向量,而不是直接索引到数据帧,如下所示:

> ix <- 'a' == row.names(df)
> df[ix,]
<0 rows> (or 0-length row.names)

或等效的(但更简洁):

> df['a' == row.names(df),]

或者,如果将对象强制到 data.table,它只会返回精确匹配:

> library(data.table)
> dt <- data.table(df)
> dt[,ix := vec]
> setkey(dt, ix)

> dt['a']
a b ix
1: NA NA a

> dt['a11']
a b ix
1: 0 1 a11

关于R 返回行名称的部分匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34233235/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com