【发布时间】:2014-09-16 09:08:25
【问题描述】:
我有以下代码:
tradingDates <- c(as.Date("1996-12-31", format = "%Y-%m-%d" ),
as.Date("1997-12-31", format = "%Y-%m-%d" ))
d1 <- data.frame(CUSIP=c("039229109","M33228109"),
Port.Weights=as.numeric(c("3.571429","4.976429")),
Trade.Date = as.Date("1996-12-31", format = "%Y-%m-%d" ), stringsAsFactors = FALSE)
d2 <- data.frame(CUSIP=c("432764733","324K32586"),
Port.Weights=as.numeric(c("6.243803","1.469823")),
Trade.Date = as.Date("1997-12-31", format = "%Y-%m-%d" ), stringsAsFactors = FALSE)
myList <- list(d1, d2)
thePorts <- lapply(seq_along(myList), function(x)
rbind(myList[[x]],
c("78462F10",
sum(as.numeric((-.01)*myList[[x]]$Port.Weights[1])),
as.Date(as.character(tradingDates[x]), format= "%Y-%m-%d")),
c("CASH_USD",
sum(as.numeric((.01)*myList[[x]]$Port.Weights[1])),
as.Date(as.character(tradingDates[x]), format= "%Y-%m-%d"))))
我得到的错误是:
Error in charToDate(x) : character string is not in a standard unambiguous format
我已经尝试了所有我能想到的方法来格式化这个日期,应该注意的是,在 rbind 和 lapply 之外,这条线工作正常:
x=5
format(as.Date(as.character(tradeDates[x]), format= "%Y-%m-%d"), "%Y%m%d")
【问题讨论】:
-
您共享数据的方式使得创建可重现的示例变得非常困难(即,我不能只是复制粘贴并运行您的代码)。但我认为问题在于您正在转换为日期,但随后您正在使用“%Y%m%d”格式化它(并转换为字符),这将是“19961213”,并且当它使用 rbind 时其他日期值,您会收到该错误,因为这是一种无效的格式。如果您也清楚地指明了此代码所需的输出,这将有所帮助。有许多奇怪的事情,例如将
c()用于混合数据类型,以及不正确的stringsAsFactors参数。 -
我已经编辑了代码。您应该能够复制/粘贴并复制我遇到的错误。非常感谢您的宝贵时间。
-
编辑让这个问题更容易回答。谢谢。
标签: r date format lapply rbind