我希望获取代码并删除包含任何缺失值的列。所以我开发了这个for循环,但我陷入困境,因为我得到了错误,如下所示。我是R的新手,所以如果你能改进下面的for循环功能,我将不胜感激。谢谢你:
"Error in `==.default`(ETF_Adj_Data[columns], is.na(ETF_Adj_Data[, columns])) : non-conformable arrays"
install.packages("quantmod")
library(quantmod)
sDate <- as.Date("2009-01-01")
eDate <- as.Date("2014-12-31")
ticker_symbol <- c("FLS","G4S","TDC")
ETF_Data <- new.env()
getSymbols(ticker_symbol, env=ETF_Data, from=sDate, to=eDate)
# Extract the Adjusted column from all objects,
# then merge all columns into one object
ETF_Adj_Data <- do.call(merge, eapply(ETF_Data, Ad))
# then extract the monthly endpoints
Monthly_ETF_Adj_Data <- ETF_Adj_Data[endpoints(ETF_Adj_Data,'months')]
for (columns in ncol(ETF_Adj_Data)){
if (ETF_Adj_Data[columns]==is.na(ETF_Adj_Data[,columns])) {
ETF_Adj_Data[columns] <- ETF_Adj_Data[,columns, drop=T]}
else {
Monthly_ETF_Adj_Data[columns] <- ETF_Adj_Data[endpoints(ETF_Adj_Data,'months')]
}
}
答案 0 :(得分:2)
请改为尝试:
#delete columns
cok=apply(Monthly_ETF_Adj_Data,2,function(x)!any(is.na(x)))
Monthly_ETF_Adj_Data[,cok] #empty
#delete rows
rok=apply(Monthly_ETF_Adj_Data,1,function(x)!any(is.na(x)))
Monthly_ETF_Adj_Data[rok,]