返回 Lag 输出时 Quantmod 覆盖列名是不是 bug
Is it a bug that Quantmod overwrites column names when returning Lag output
例如:
> col1<-Lag(c(1,2,3))
> col1
Lag.1
[1,] NA
[2,] 1
[3,] 2
> df<-data.frame(a=c(1,2,3))
> df$a<-Lag(df$a)
> df
Lag.1
1 NA
2 1
3 2
请注意,headers 列是 Lag.1
而不是预期的 a
这不是 quantmod 或 Lag
特有的。这就是使用 data.frame 列 ($<-.data.frame
) 进行替换的方式。如果用具有列名称的 1 列矩阵替换列,现有列将被删除并替换为新列。
例如:
df <- data.frame(a=1:3)
mat <- matrix(3:1, dimnames=list(NULL, "A"))
df$a <- mat
如果您不希望这种情况发生,您应该 drop
要用作替代品的对象的尺寸。
df <- data.frame(a=1:3)
df$a <- drop(Lag(df$a))
例如:
> col1<-Lag(c(1,2,3))
> col1
Lag.1
[1,] NA
[2,] 1
[3,] 2
> df<-data.frame(a=c(1,2,3))
> df$a<-Lag(df$a)
> df
Lag.1
1 NA
2 1
3 2
请注意,headers 列是 Lag.1
而不是预期的 a
这不是 quantmod 或 Lag
特有的。这就是使用 data.frame 列 ($<-.data.frame
) 进行替换的方式。如果用具有列名称的 1 列矩阵替换列,现有列将被删除并替换为新列。
例如:
df <- data.frame(a=1:3)
mat <- matrix(3:1, dimnames=list(NULL, "A"))
df$a <- mat
如果您不希望这种情况发生,您应该 drop
要用作替代品的对象的尺寸。
df <- data.frame(a=1:3)
df$a <- drop(Lag(df$a))