我的问题听起来可能对你很多,但经过长时间的互联网搜索,我仍然没有回答以下问题:
如何将三维数组转换为"三维"列表?
假设我有以下内容:
A1 <- matrix(runif(12),4,3)
A2 <- matrix(runif(12),4,3)
A3 <- matrix(runif(12),4,3)
MyList <- list(A1,A2,A3)
MyArray <- array(NA,c(4,3,3))
MyArray[,,1] <- A1
MyArray[,,2] <- A2
MyArray[,,3] <- A3
Run Code Online (Sandbox Code Playgroud)
有没有办法转换MyArray成具有"相同结构"的列表MyList?
非常感谢您的帮助!最好的,罗曼
假设我有一个矩阵foo如下:
foo <- cbind(c(1,2,3), c(15,16,17))
> foo
[,1] [,2]
[1,] 1 15
[2,] 2 16
[3,] 3 17
Run Code Online (Sandbox Code Playgroud)
我想把它变成一个看起来像的列表
[[1]]
[1] 1 15
[[2]]
[1] 2 16
[[3]]
[1] 3 17
Run Code Online (Sandbox Code Playgroud)
你可以这样做:
lapply(apply(foo, 1, function(x) list(c(x[1], x[2]))), function(y) unlist(y))
我对另一种不那么复杂的方法感兴趣.注意,如果你这样做apply(foo, 1, function(x) list(c(x[1], x[2]))),它会在列表中返回一个列表,我希望避免这样做.
我有两个data.frames,一个有事件数据,另一个有几个公司的股票数据(这里只有两个).我希望在我的事件data.frame中为两家公司增加两个日期滞后(-1天和+1天)的列.滞后日期应该来自我的库存数据.框架(df)当然.我怎样才能做到这一点?
DATE <- c("01.01.2000","02.01.2000","03.01.2000","06.01.2000","07.01.2000","09.01.2000","10.01.2000","01.01.2000","02.01.2000","04.01.2000","06.01.2000","07.01.2000","09.01.2000","10.01.2000")
RET <- c(-2.0,1.1,3,1.4,-0.2, 0.6, 0.1, -0.21, -1.2, 0.9, 0.3, -0.1,0.3,-0.12)
COMP <- c("A","A","A","A","A","A","A","B","B","B","B","B","B","B")
df <- data.frame(DATE, RET, COMP)
df
# DATE RET COMP
# 1 01.01.2000 -2.00 A
# 2 02.01.2000 1.10 A
# 3 03.01.2000 3.00 A
# 4 06.01.2000 1.40 A
# 5 07.01.2000 -0.20 A
# 6 09.01.2000 0.60 A
# 7 10.01.2000 0.10 A
# 8 01.01.2000 -0.21 B
# 9 02.01.2000 -1.20 B
# 10 04.01.2000 0.90 B
# 11 06.01.2000 …Run Code Online (Sandbox Code Playgroud) 我有一个mx n矩阵,如下所示:
1 2 3
4 5 6
Run Code Online (Sandbox Code Playgroud)
按行获取所有可能组合的最快方法是什么?在这种情况下,那将是c(1,4), c(1,5), c(1,6), c(2,4), c(2,5) ... c(3,5), c(3,6)
如何使用矢量化方法解决这个问题?通常,mx n矩阵将具有n^m这样的组合.
我想象的琐碎问题..
我有一个M×N矩阵.例如:
mat <- matrix(data = rnorm(12), nrow = 3, ncol = 4)
Run Code Online (Sandbox Code Playgroud)
并且我想将其转换为M个向量的数组,每个向量的长度为N(意味着一个数组,其中每个向量是矩阵中的一行).