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

使用tribble()构建tibble时如何按行将一列的值传递到另一列?

解决方案

问题原因

你原来的写法无法实现预期效果,是因为tribble按行录入数据时,~tolower(var)里的var会被直接识别为未求值的符号存入公式,不会自动替换为同行列的取值。

实现方法

方法1:直接在tribble中手动注入值

如果你的数据量小,可以直接用rlang的表达式注入语法,把对应的值直接写到公式里:

library(tibble)
library(rlang)

my_trib <- tribble(
  ~var,      ~my_func,
  "ABC",      ~tolower(!!"ABC"),
  "abc",      ~toupper(!!"abc")
)

输出的my_trib$my_func就会是你期望的结果:

[[1]]
~tolower("ABC")

[[2]]
~toupper("abc")

方法2:批量生成避免重复输入

如果不想手动重复写var的取值,可以先录入基础信息,再按行批量生成公式列:

library(tibble)
library(dplyr)
library(rlang)

my_trib <- tribble(
  ~var,      ~func_name,
  "ABC",      "tolower",
  "abc",      "toupper"
) %>% 
  rowwise() %>% 
  mutate(
    # 按行把var的值和函数名注入公式
    my_func = list(~ (!!sym(func_name))(!!var))
  ) %>% 
  ungroup() %>% 
  select(-func_name)

这个方法适合数据行数多的场景,不需要手动逐个修改公式内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 17:15:03