R语言:不生成新对象时如何在数据框中创建两列差值变量?
R语言中在数据框内直接创建差值变量的方法
你原来的代码报错是因为在data.frame()构造过程中,A和B还不是全局环境里的变量,只是数据框的列定义,所以直接写C = A - B会找不到这两个对象。下面是几种不需要额外生成临时对象(比如你示例里的a、b)的解决方案:
使用
transform()函数:这是基础R里专门用来给数据框添加衍生列的工具,能直接在构造数据框的同时生成新变量:DF <- transform(data.frame(A = rnorm(10), B = rnorm(10)), C = A - B)使用
within()函数:它会在数据框的内部环境中执行变量操作,语法更接近常规赋值:DF <- within(data.frame(A = rnorm(10), B = rnorm(10)), C <- A - B)如果你习惯用tidyverse工具链,也可以用
dplyr::mutate()(无需额外临时变量):library(dplyr) DF <- data.frame(A = rnorm(10), B = rnorm(10)) %>% mutate(C = A - B)
内容的提问来源于stack exchange,提问作者M.C. Park
相关产品推荐
相关产品推荐

