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

如何为数据框每行URL添加status_code列及解决apply报错

解决方法

错误原因

你用apply处理df$url时出错,是因为apply要求输入必须是矩阵或数据框,但df$url是一维向量,没有二维维度,所以触发dim(X) must have a positive length错误。另外第二个尝试里的dat是拼写错误,应该是df。

正确实现代码

下面两种方法都能完成需求,还能处理无效URL(比如youtefe.com这种无前缀或不存在的域名),避免程序中断:

方法1:用基础R的sapply

library(httr)

# 给df新增status_code列
df$status_code <- sapply(df$url, function(x) {
  # 捕获请求失败的情况,返回NA
  response <- tryCatch(httr::GET(x), error = function(e) NULL)
  if (!is.null(response)) {
    response$status_code
  } else {
    NA
  }
})

方法2:用purrr包更简洁

library(httr)
library(purrr)

df$status_code <- map_dbl(df$url, ~{
  response <- tryCatch(httr::GET(.x), error = function(e) NULL)
  # %||% 是purrr的函数,意思是左边为NULL时返回右边的值
  response$status_code %||% NA_real_
})

结果验证

运行后你的数据框会新增status_code列,示例中的四个URL会返回类似:200、404、200、NA(因为youtefe.com无法正常请求)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 22:30:56