ifelse()被因子 - 字符 - 日期转换(R)

时间:2017-10-16 16:19:02

标签: r

我想要将一系列因素转换为字符。 (例如'18 -DEC-15')。正如预期的那样,调用df$datesunique(df$dates)会产生一组典型的日期/因素。

调用as.character(df$dates)会产生与df$dates相同的列表,从控制台进行目视检查。但是,调用ifelse(TRUE,as.character(df$dates),df$dates)只会产生一个元素 - 一个任意日期。

我不知道为什么在ifelse中包含一个调用会改变底层操作。 Dplyr似乎解决了这个问题,因为调用transmute(df,newvar=as.character(dates))确实产生了正确的列表,这与令人抓狂的简单ifelse()不同。这似乎是一个支持我以前从未听过的变异的巨大论据。此外,ifelse(FALSE,as.character(df$dates),df$dates)返回一个整数(~130),而不是df$dates中包含的实际因子列表

编辑 - 感谢您提供有用的评论。 rep(T / F,nrow())正是正确的方法,并解释了为什么第一次测试失败(即它实际上已经通过)。现在的问题是ifelse(rep(TRUE,nrow(df)),as.character(df$dates),df$dates)ifelse(rep(FALSE,nrow(df)),as.character(df$dates),df$dates)之间的区别。显然,进行修正后,FALSE测试仍然失败。即,它返回一个整数向量,而TRUE测试返回适当的向量(可读日期之一)

0 个答案:

没有答案