You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将输入字符串匹配DataFrame中的对应数字ID?

解决方案:从匹配字符串获取对应ID

这其实很简单,咱们可以用几种不同的方法来实现,我给你演示两种常用的方式,适配不同的R使用习惯:

方法1:Base R 原生实现

首先先构造你的数据框(如果已经存在就跳过这一步):

df <- data.frame(
  ID = c(22, 23, 24),
  name = c("coffee", "tea", "milk"),
  stringsAsFactors = FALSE # 避免字符列被自动转成因子,防止匹配出错
)

然后读取用户输入,并匹配对应的ID:

# 获取用户输入
my.string <- readline(prompt="Enter string 1: ")

# 通过逻辑索引匹配对应的ID
matched_id <- df$ID[df$name == my.string]

# 处理匹配结果:有输出ID,无则提示
if(length(matched_id) == 0) {
  cat("No matching ID found for", my.string, "\n")
} else {
  cat("Matched ID:", matched_id, "\n")
}

如果想忽略字符串的大小写(比如用户输入Coffee也能匹配到22),可以稍微修改匹配逻辑:

matched_id <- df$ID[tolower(df$name) == tolower(my.string)]

方法2:用tidyverse/dplyr实现(适合熟悉 tidy 语法的用户)

如果你习惯用dplyr的管道风格,可以这样写:

# 先加载dplyr包(如果没安装先运行 install.packages("dplyr"))
library(dplyr)

# 构造数据框(同上)
df <- data.frame(
  ID = c(22, 23, 24),
  name = c("coffee", "tea", "milk"),
  stringsAsFactors = FALSE
)

# 获取用户输入
my.string <- readline(prompt="Enter string 1: ")

# 用filter和pull提取ID
matched_id <- df %>%
  filter(name == my.string) %>%
  pull(ID)

# 同样处理结果
if(length(matched_id) == 0) {
  cat("No matching ID found for", my.string, "\n")
} else {
  cat("Matched ID:", matched_id, "\n")
}

两种方法都能实现你要的效果:输入coffee就返回22,输入tea返回23,以此类推。你可以根据自己的代码风格选择合适的方式~

内容的提问来源于stack exchange,提问作者pylearner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:25:09