为什么变换无声地失败?

Ama*_*nda 1 r transform

假设我有一个日期列的框架:

test.frame$alt_dates <- c('2001-01-04', '2001-05-11', '2001-05-14', '2001-07-24', '2003-12-24', '2004-07-21', '2004-10-15', '2004-12-15', '2005-03-17', '2005-07-18')
Run Code Online (Sandbox Code Playgroud)

他们从角色开始.好的:

class(test.frame$alt_dates)
[1] "character"
Run Code Online (Sandbox Code Playgroud)

如果我尝试使用transform将这些日期转换为日期:

transform(test.frame, alt_dates <- as.Date(alt_dates)
Run Code Online (Sandbox Code Playgroud)

R只是将我的框架打印到控制台.如果我直接转换列,它工作正常:

test.frame$alt_dates <- as.Date(test.frame$alt_dates)
class(test.frame$alt_dates)
[1] "Date"
Run Code Online (Sandbox Code Playgroud)

我对Transform的错误是什么?

更新:正如一些人注意到的那样,我没有把结果分配给任何东西.这样就解释了打印到屏幕并且没有存储任何更改.但即使我捕获结果它也不起作用:

test.frame <- transform(test.frame, more_dates <- as.Date(more_dates))
class(test.frame$more_dates)
[1] "character"
Run Code Online (Sandbox Code Playgroud)

Ben*_*ker 5

正如@Andrie和@StephanKolassa所说,你需要分配结果.但是,你在使用中犯了另一个错误transform,恰好在这种情况下工作,但几乎在任何其他情况下都会咬你.<-并且=在这种情况下不可互换.您应该使用=具有transform(在这种情况下,我觉得它的工作原理,因为测试数据帧只有一个列!)

test.frame <- data.frame(alt_dates=c('2001-01-04', '2001-05-11', '2001-05-14', 
  '2001-07-24', '2003-12-24', '2004-07-21', '2004-10-15', '2004-12-15', 
  '2005-03-17', '2005-07-18'))
test.frame <- transform(test.frame,alt_dates=as.Date(alt_dates))
Run Code Online (Sandbox Code Playgroud)