给出跟踪器名称的向量,例如:datanames = c("A", "B", "C", "D", "E")
我使用此向量从.csv收集数据并将其放入以跟踪器命名的数据帧列表中。
for (stocks in datanames)
{
stockdfs[[stocks]] = mycsv[mycsv$tracker == stocks,]
}
这很好用。
我现在正尝试将此列表转换为包含xts对象的列表,以便可以对其进行一些时间序列分析。因此,我添加:
row.names(stockdfs[[stocks]]) = stockdfs[[stocks]]$Date #xts requirement
##BELOW IS WHERE THE PROBLEM LIES##
stockxts[[stocks]] = as.xts(stockdfs[[stocks]])
stockinsampxts[[stocks]] = as.xts(stockdfs[[stocks]][0:2000,])
stockoutsampxts[[stocks]] = as.xts(stockdfs[[stocks]][2000:nrow(stockdfs[[stocks]]),])
print(stocks)
问题是,当我尝试查看列表中的xts对象时,我得到了:
Error in names[[i]] : subscript out of bounds
奇怪的是,我仍然可以从控制台访问数据,例如print(stockxts [[“ A”]])。
非常感谢您的帮助,我是R新手! 谢谢!
答案 0 :(得分:1)
有两种创建xts对象的方法,一种是通过创建row.names来创建,第二种是使用 @Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == Activity.RESULT_OK) {
if (requestCode == REQUEST_CAMERA) {
//Bundle bundle = data.getExtras();
// final Bitmap bmp = (Bitmap) data.getExtras().get("data");
//imageView.setImageBitmap(bmp);
Glide.with(this).load(imageFilePath).into(imageView);
//imageBitmap = bmp;
globalPost = imageFilePath;
share.setVisibility(View.VISIBLE);
} else if (requestCode == REQUEST_GALLERY) {
Uri selectedImageUri = data.getData();
imageView.setImageURI(selectedImageUri);
try {
String[] filePathColumn = { MediaStore.Images.Media.DATA };
Cursor cursor = getActivity().getContentResolver().query(selectedImageUri,
filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String picturePath = cursor.getString(columnIndex);
globalPost = picturePath;
cursor.close();
share.setVisibility(View.VISIBLE);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
private String imageToString(Bitmap imageBitmap) {
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
imageBitmap.compress(Bitmap.CompressFormat.JPEG,100,byteArrayOutputStream);
byte[] imgByte = byteArrayOutputStream.toByteArray();
return Base64.encodeToString(imgByte,Base64.DEFAULT);
}
函数中的order.by选项。
但是您应该意识到您没有从数据中删除日期列。 xts数据是一个矩阵,如果包含日期,则矩阵中的所有内容都是字符。
在行名声明之后,您可以执行以下操作删除日期:
as.xts
,然后 stockdfs[[stocks]]$Date <- NULL
将具有数字形式的xts数据(只要其他列中没有其他字符值)。
在以下示例中,删除日期或保留日期后,您可以看到结果的差异:
stockxts[[stocks]] = as.xts(stockdfs[[stocks]])