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

使用fromJSON函数捕获API数据报错:Argument 'txt'参数不符合要求

解决fromJSON报错:Argument 'txt' must be a JSON string, URL or file.

我一眼就看出问题所在啦——你单独测试时传的是完整的API URL,但传给lapply的namelisttest里应该只是纯名字(比如"Matt"),不是拼接好的请求地址对吧?

咱们来拆解下:
你写的函数mynamegenderfunction里直接把参数x传给fromJSON(),但fromJSON()需要的是能直接返回JSON的资源(完整URL、JSON字符串或者本地文件路径)。如果x只是个名字,它根本不知道这是什么,自然就抛出那个错误了:

Error: Argument 'txt' must be a JSON string, URL or file.

修复方案很简单,分两步走:

  1. 修改函数,自动拼接API URL
    把名字和API基础地址拼接成完整的请求链接,还要注意处理名字前后的空格(避免URL里出现多余空格导致请求失败):

    mynamegenderfunction <- function(x){ 
      # 先清理名字的前后空格,再拼接成合法API地址
      clean_name <- trimws(x)
      api_url <- paste0("https://api.genderize.io/?name=", clean_name)
      print(api_url) # 可以打印出来验证地址是否正确
      mydata <- as.data.frame(fromJSON(api_url)) 
    } 
    
  2. 确保namelisttest是纯名字列表
    比如你的列表应该是这样的:

    namelisttest <- c("Matt", "Emma", "Liam", "Olivia")
    

额外小提示:

如果你的名字里包含空格或者特殊字符(比如"Mary Ann"、"José"),记得用URLencode()处理一下,避免生成无效的URL:

api_url <- paste0("https://api.genderize.io/?name=", URLencode(trimws(x)))

最后再运行genderdata <- lapply(namelisttest, mynamegenderfunction),应该就能正常获取数据啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:18:27