我想要将一系列因素转换为字符。 (例如'18 -DEC-15')。正如预期的那样,调用df$dates
和unique(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测试返回适当的向量(可读日期之一)