【问题标题】:Automatic addition of columns to a data.frame in an R function自动将列添加到 R 函数中的 data.frame
【发布时间】:2019-09-29 11:04:34
【问题描述】:

在下面的函数foo 中,参数long 接受二进制T/F 输入的向量。鉴于在我的函数中名为 outdata.frame ,我希望我的函数添加一个名为 "long" 的列,并用 Ts 填充它用于 T 输入和 F 用于来自的 F 输入"long" 参数。另外,我希望我的函数添加一个名为 "short" 的列,并使用 Fs 填充它以用于 T 输入,T 用于来自F 参数的F 输入。

这是我尝试过但没有成功的方法:

foo <- function(d, long){

nm <- if(!missing(long) & long) "long" else if(!missing(long) & !long) "short" # problematic

out <- data.frame(d)

if(!missing(long))out[nm] <- long  ## problematic

return(out)
}

 foo(d = 1:3, long = c(T, F,T))

【问题讨论】:

    标签: r function dataframe subset


    【解决方案1】:

    你可以的

    foo <- function(d, long){
      data.frame(d, long = long, short = !long)
    }
    
    foo(d = 1:3, long = c(T, F,T))
    
    #  d  long short
    #1 1  TRUE FALSE
    #2 2 FALSE  TRUE
    #3 3  TRUE FALSE
    

    或者,如果您只想输出为 "T""F"

    foo <- function(d, long){
       out <- data.frame(d, long = long, short = !long)
       transform(out, long = substr(long, 1, 1), short = substr(short, 1, 1))
    }
    
    foo(d = 1:3, long = c(T, F,T))
    #  d long short
    #1 1    T     F
    #2 2    F     T
    #3 3    T     F
    

    【讨论】:

      猜你喜欢
      • 2010-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-25
      • 1970-01-01
      • 2011-12-16
      • 2019-05-21
      • 2015-02-12
      相关资源
      最近更新 更多