我正在尝试在R数据框中运行for循环以提取股票数据框的最后价格。我无法将结果附加到原始数据框并将其用作第二列。这是我到目前为止使用的代码。我可以打印但不添加到新列。我试图将循环值设置为等于新列,但我收到错误
for (i in df_financials$Ticker){
df_financials$Last_Price=(bdp(i,'PX_LAST'))
}
Error in `$<-.data.frame`(`*tmp*`, "Last_Price", value = list(PX_LAST =
NA_real_)) :
replacement has 1 row, data has 147
Print(df_financials)
Ticker
1 ENH Equity
2 AXS Equity
3 BOH Equity
4 CNA Equity
5 TRH Equity
答案 0 :(得分:0)
首先需要指定将命令应用于指定向量的顺序以及何时停止[即,在1:length(df$Var)
中使用for()
]。其次,指定要替换的新列的哪一行(i)(即df$var[i]
)。试试下面的代码,看看是否有效。
for (i in 1:length(df_financials$Ticker)){
df_financials$Last_Price[i]=(bdp(i,'PX_LAST'))
}
我不熟悉bdp()函数本身。但是,我怀疑 问题是你试图从列表中提取的数据超过你感兴趣的股票。如果是这种情况,你需要引用第i行中你想获得最后价格的股票。如果我正确地理解了这一点,下面的代码应该可以解决问题。
我会假设列表类似于
Stock<-data.frame(other_stocks = c("ENH","AXS","Rando1","BOH","CNA","TRH","Rando2","Rando3"),
PX_LAST=c(1,2,3,4,5,6,7,8))
股票
for (i in 1:length(df$Ticker)){
df$Last_Price[i]=(bdp(df$Ticker[i],'PX_LAST'))
}