簡體   English   中英

R中的基本矩陣/數據幀算法

[英]basic matrix/data.frame arithmetic in R

我無法在R中執行簡單的矩陣算術,這令人感到困惑。這真的不可能嗎? 我想采用1個數據框中的值,並將其子跟蹤到另一個數據框中的所有列。 看起來像這樣應該很容易,但是我什么也沒找到,盡管有一個“心理”程序包可以作為功能,但不能給出預期的結果。 似乎也沒有必要。 有小費嗎。 非常感激。

> NROW(arData1[c(gsub(" ", ".",portfolio1), "benchmark")])
[1] 51
> NCOL(arData1[c(gsub(" ", ".",portfolio1), "benchmark")])
[1] 4
> NROW(arData1[gsub(" ", ".", treasuries)])
[1] 51
> NCOL(arData1[gsub(" ", ".", treasuries)])
[1] 1

ExRet1 <- arData1[c(gsub(" ", ".",portfolio1), "benchmark")] - arData1[gsub(" ", ".", treasuries)]
Error in Ops.data.frame(arData1[c(gsub(" ", ".", portfolio1), "benchmark")],  : 
  - only defined for equally-sized data frames

問題與您建立索引的方式有關。

df["colname"]

提取列colname 作為數據框 如果減去兩個數據幀,R會按列和按行進行此操作,因此兩個數據幀的列數必須相同。

但是,您可以使用[[提取colname作為矢量 ,如

df[["colname"]]

如果從數據幀中減去一個向量,則會從df每一列中減去該向量。

df <- data.frame(x=1:5,y=11:15,z=21:25,A=31:35)
df[c("x","y","z")] - df["A"]
# Error in Ops.data.frame(df[c("x", "y", "z")], df["A"]) : 
#   - only defined for equally-sized data frames

df[c("x","y","z")] - df[["A"]]
#     x   y   z
# 1 -30 -20 -10
# 2 -30 -20 -10
# 3 -30 -20 -10
# 4 -30 -20 -10
# 5 -30 -20 -10

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM