Почему ifelse преобразует data.frame в список: ifelse (TRUE , data.frame (1), 0))! = data.frame (1)?

Я хочу вернуть data.frame из функции, если TRUE, иначе вернуть NA, используя return (ifelse (condition, mydf, NA))

Однако ifelse удаляет имена столбцов из data.frame.

Почему эти результаты отличаются?

> data.frame(1)
  X1
1  1
> ifelse(TRUE, data.frame(1), NA)
[[1]]
[1] 1

Некоторые дополнительные сведения из dput ():

> dput(ifelse(TRUE, data.frame(1), 0))
list(1)
> dput(data.frame(1))
structure(list(X1 = 1), .Names = "X1", row.names = c(NA, -1L), 
          class = "data.frame")
17
задан David LeBauer 10 June 2011 в 18:46
поделиться