这是我的数据
> a
[1] Male Male Female Male Male Male Female Female Male Male Female Male Male Male
[15] Female Female Female Male Female Male Female Male Male Female Male Male Female Male
[29] Male Male Female Male Male Male Female Female Male Male Male Male Male
Levels: Female Male
> b
[1] 0 1 0 1 0 0 0 0 1 1 1 1 0 1 0 0 0 1 0 0 1 0 0 0 1 1 1 …
Run Code Online (Sandbox Code Playgroud) 清单a
如下:
a<-list(3:6,6:8,3:4,8)
> a
[[1]]
[1] 3 4 5 6
[[2]]
[1] 6 7 8
[[3]]
[1] 3 4
[[4]]
[1] 8
Run Code Online (Sandbox Code Playgroud)
我的目标是计算每个对象中所有2元素组合的所有产品.例如,第一个对象a
是3 4 5 6
,所以第一个对象的12 15 18 20 24 30
所有产品都是,第二个对象的所有产品都是42 48 56
.但是当对象中只有一个元素时,输出应该是0
.我计划通过使用来解决问题Map(function(x) combn(x,2,prod),a)
,但是当对象中只有一个元素(例如第4个对象a
)时它不适合.
> Map(function(x) combn(x,2,prod),a)
[[1]]
[1] 12 15 18 20 24 30
[[2]]
[1] 42 48 56
[[3]]
[1] 12
[[4]]
[1] 2 3 4 5 6 7 8 6 8 …
Run Code Online (Sandbox Code Playgroud) a,b和c是列表.
a<-list(c(6,5,7),c(1,2),c(1,3,4))
b<-list(c(1,2,3),c(4,5),c(6,7,8))
c<-list(1,2,2)
Run Code Online (Sandbox Code Playgroud)
我想在"c"处将"a"替换为"b"以生成新列表.
预期结果如下:
[[1]]
[1] 1 5 7
[[2]]
[1] 1 5
[[3]]
[1] 1 7 4
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助!
a<-list(5,6,8,4,5,2)
b<-c(3,2,1)
Run Code Online (Sandbox Code Playgroud)
我想根据"b"将"a"加起来形成一个新列表.
即(5 + 6 + 8),(4 + 5),2
预期的结果是:
[[1]]
[1] 19
[[2]]
[1] 9
[[3]]
[1] 2
Run Code Online (Sandbox Code Playgroud)
我使用下面的代码来解决这个问题,但我想知道是否有更方便的方法来解决这个问题.谢谢!
p<-rep(1:length(b),b)
as.list(sapply(1:length(b), function(x) {sum(as.numeric(a)[which(p==x)])}))
Run Code Online (Sandbox Code Playgroud) "a"是列表,"b"是矩阵.
a<-list(matrix(c(0,2,0,1,0,2,0,0,1,0,0,0,0,0,2,2),4),
matrix(c(0,1,0,0,0,1,1,0,0,0,0,0),3),
matrix(c(0,0,0,0,2,0,1,0,0,0,0,0,2,0,2,1,0,1,1,0),5))
b<-matrix(c(2,2,1,1,1,2,1,2,1,1,2,1,1,1,1,1,1,2,2,2,1,2,1,1),6)
> a
[[1]]
[,1] [,2] [,3] [,4]
[1,] 0 0 1 0
[2,] 2 2 0 0
[3,] 0 0 0 2
[4,] 1 0 0 2
[[2]]
[,1] [,2] [,3] [,4]
[1,] 0 0 1 0
[2,] 1 0 0 0
[3,] 0 1 0 0
[[3]]
[,1] [,2] [,3] [,4]
[1,] 0 0 0 1
[2,] 0 1 0 0
[3,] 0 0 2 1
[4,] 0 0 0 1
[5,] 2 0 …
Run Code Online (Sandbox Code Playgroud) a是包含列表的列表:
a<-list(list(matrix(c(0,0,0,1,2,1,2,2,2,1,1,1),3),
matrix(c(0,0,1,2,2,2,2,1),2)),
list(matrix(c(0,0,1,2,2,1,1,1,2,2,2,2),3)))
> a
[[1]]
[[1]][[1]]
[,1] [,2] [,3] [,4]
[1,] 0 1 2 1
[2,] 0 2 2 1
[3,] 0 1 2 1
[[1]][[2]]
[,1] [,2] [,3] [,4]
[1,] 0 1 2 2
[2,] 0 2 2 1
[[2]]
[[2]][[1]]
[,1] [,2] [,3] [,4]
[1,] 0 2 1 2
[2,] 0 2 1 2
[3,] 1 1 2 2
Run Code Online (Sandbox Code Playgroud)
我想提取所有对象的第一列.我们知道如果列表是由矩阵组成的,我们可以用"Map"函数来解决这个问题,但是现在列表是由列表组成的,我们不能用"Map"来解决这个问题,我怎么办呢这容易吗?
我使用以下代码来解决这个问题:
sapply(1:length(a), function(x) {Map(function(y) y[,1],a[[x]])})
Run Code Online (Sandbox Code Playgroud)
它可以解决,但我想知道是否有更方便的方法来解决这个问题,因为我需要在以后基于这个问题做更多的工作.谢谢!
"a"是矩阵,"b"是数字.行号"a"与"b"的长度相同.
a<-matrix(1:24,6,4,byrow = T)
b<-c(3,1,2)
Run Code Online (Sandbox Code Playgroud)
我想将"a"转换为列表,其中每个对象中的元素数量与"b"相同.预期结果如下:
[[1]]
[,1] [,2] [,3] [,4]
[1,] 1 2 3 4
[2,] 5 6 7 8
[3,] 9 10 11 12
[[2]]
[,1] [,2] [,3] [,4]
[1,] 13 14 15 16
[[3]]
[,1] [,2] [,3] [,4]
[1,] 17 18 19 20
[2,] 21 22 23 24
Run Code Online (Sandbox Code Playgroud)
非常感谢你的帮助!