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

如何在R的dplyr中为数据框生成含不同tempfile的列?

解决方法

方法1:使用rowwise()逐行执行

rowwise()会强制mutate中的函数逐行运行,这样每行都会独立调用tempfile()生成唯一的临时文件路径,记得最后用ungroup()取消逐行模式,避免影响后续操作:

library(dplyr)

df <- tibble(foo = 1:5)
df |> 
  rowwise() |> 
  mutate(my_tmp_file = tempfile()) |> 
  ungroup()

方法2:用purrr::map_chr()配合长度匹配的向量

不需要用到向量的具体值,只需要一个和数据框行数一致的向量来触发多次调用tempfile()。可以用数据框的现有列,也可以直接生成对应长度的序列:

library(dplyr)
library(purrr)

df <- tibble(foo = 1:5)
# 利用现有列触发调用
df |> 
  mutate(my_tmp_file = map_chr(foo, ~tempfile()))

# 不依赖现有列的通用写法
df |> 
  mutate(my_tmp_file = map_chr(seq(nrow(df)), ~tempfile()))

方法3:将tempfile()转换为向量化函数

用Vectorize()工具将非向量化的tempfile()包装成向量化函数,之后就能直接在mutate中使用,自动为每行生成不同路径:

library(dplyr)

# 生成向量化的临时文件函数
vec_tempfile <- Vectorize(tempfile)
df <- tibble(foo = 1:5)
df |> 
  mutate(my_tmp_file = vec_tempfile())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 09:57:13