假设我有两个包含几个矩阵的列表.第一个列表包括尺寸不同于矩阵的矩阵:
创建list1的代码:
d<-c(0,1,0,1)
e<-c(1,0,0,0)
f<-c(0,0,0,0)
g<-c(1,0,0,0)
cn<-c(1,2,3,4)
p<-data.frame(d,e,f,g)
dimnames(p)<-list(cn,cn)
d<-c(0,1,0,1,0)
e<-c(1,0,0,0,0)
f<-c(0,0,0,0,0)
g<-c(1,0,0,0,1)
h<-c(0,0,0,1,0)
cn<-c(1,2,3,4,5)
q<-data.frame(d,e,f,g,h)
dimnames(q)<-list(cn,cn)
list1<-list(p,q)
names(list1)<-1990:1991
Run Code Online (Sandbox Code Playgroud)
列表1:
list1
$`1990`
1 2 3 4
1 0 1 0 1
2 1 0 0 0
3 0 0 0 0
4 1 0 0 0
$`1991`
1 2 3 4 5
1 0 1 0 1 0
2 1 0 0 0 0
3 0 0 0 0 0
4 1 0 0 0 1
5 0 0 0 …Run Code Online (Sandbox Code Playgroud) 假设我有一个矩阵列表:
$`2010`
1 2 3 4
1 0 3 5 6
2 5 1 9 5
3 0 0 0 0
4 10 10 10 0
$`2011`
1 2 3 4
1 0 2 3 6
2 5 0 3 1
3 2 4 0 1
4 2 1 2 1
Run Code Online (Sandbox Code Playgroud)
创建矩阵的代码:
cntry<-c(1,2,3,4)
a<-c(0,5,0,10)
b<-c(3,1,0,10)
c<-c(5,9,0,10)
d<-c(6,5,0,0)
k<-data.frame(a,b,c,d)
k<-as.matrix(k)
dimnames(k)<-list(cntry,cntry)
e<-c(0,5,2,2)
f<-c(2,0,4,1)
g<-c(3,3,0,2)
h<-c(6,1,1,1)
l<-data.frame(e,f,g,h)
l<-as.matrix(l)
dimnames(l)<-list(cntry,cntry)
list<-list(k,l)
names(list)<-2010:2011
Run Code Online (Sandbox Code Playgroud)
我希望在每一行中保留两个最高值,并将同一行中其他单元格的剩余较小值替换为0.
如果有两个以上的单元格具有最高值,我希望保留所有这些单元格(例如:10 10 10 0-> 10 10 10 0,5 1 9 …
假设我在R中有一个数据集,表明国际组织中国家的成员资格(原始数据集可以在这里找到:IGO_stateunit_v2.3.zip).
以下是数据基本结构的示例:
cntr <- c('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J')
UNO <- c(0, 1, 1, 1, 1, 1, 1, 1, 1, 1)
APEC <- c(0, 0, 0, 0, 1, 1, 1, 0, 0, 0)
ASEAN <- c(0, 0, 0, 0, 1, 1, 0, 0, 0, 0)
data <- data.frame(cntr, UNO, APEC, ASEAN)
Run Code Online (Sandbox Code Playgroud)
所以数据看起来像这样,其中1 =组织中的成员资格:
cntr UNO APEC ASEAN
A 0 0 0
B 1 0 0
C 1 0 0
D 1 0 0 …Run Code Online (Sandbox Code Playgroud)