在R data.table中你可以使用条件语句添加多个列吗?

时间:2015-03-17 14:40:27

标签: r data.table

我想在一个函数中添加多个列到data.table,具体取决于其他列中的值。

d.f <- data.frame(a=c(1,2,3),b=c(4,5,1))
d.t <- data.table (d.f)

g <- function(x,y){
  if (y>x)
     return (list(1,2))
   else 
return (list(2,1))
}
 d.t[,c('x','y'):=g(a,b)]

但是这出错了,使用ifelse似乎也不起作用。

1 个答案:

答案 0 :(得分:4)

您应该使用ifelse代替if (...) else。 return语句也应该是长度为2的列表,每个列表元素的长度与xy相同。

g <- function(x,y){
  list(ifelse(y>x, 1, 2), 
       ifelse(y>x, 2, 1))
}