Автоматическое добавление столбцов в data.frame в функции R - PullRequest
1 голос
/ 12 мая 2019

В функции foo ниже аргумент long принимает вектор двоичного T/F ввода. Учитывая data.frame, называемый out в моей функции, я хочу, чтобы моя функция добавила столбец с именем "long" и заполнила его T s для входных данных T и F для входных данных F из "long" аргумент. Кроме того, я хочу, чтобы моя функция добавила столбец с именем "short" и заполнил его F s для входных данных T и T для входных данных F из аргумента "long".

Вот что я пытался безуспешно:

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))

1 Ответ

1 голос
/ 12 мая 2019

Вы можете сделать

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
...