Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于另一个数据帧R更改整行的值_R_For Loop_Apply_Data Manipulation - Fatal编程技术网

基于另一个数据帧R更改整行的值

基于另一个数据帧R更改整行的值,r,for-loop,apply,data-manipulation,R,For Loop,Apply,Data Manipulation,我有一个大的,有方向的邻接矩阵的友谊。调查数据中没有一些观察结果。对于那些不在调查数据框中的观测值,我想将它们行中的所有值重新编码为10。以下是一些示例数据: 拥有矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

我有一个大的,有方向的邻接矩阵的友谊。调查数据中没有一些观察结果。对于那些不在调查数据框中的观测值,我想将它们行中的所有值重新编码为10。以下是一些示例数据:

拥有矩阵:

     1   2   3   4   5   6   7   8   9   10  11  12  13  14  15  16  17  18  19  20
 1   0   1   0   1   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
 2   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
 3   1   1   0   0   1   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
 4   1   1   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
 5   1   0   1   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
 6   0   0   0   0   0   0   1   0   1   0   0   0   0   0   0   0   0   0   0   0
 7   0   0   0   0   0   0   0   0   1   1   0   0   0   0   0   0   0   0   0   0
 8   0   0   0   0   0   0   0   0   0   1   0   0   0   0   0   0   0   0   0   0
 9   0   0   0   0   0   1   0   0   0   0   0   0   0   0   0   0   0   0   0   0
10   0   0   0   0   0   0   1   0   0   0   0   0   0   0   0   0   0   0   0   0
11   0   0   0   0   0   0   0   0   0   0   0   0   0   0   1   0   0   0   0   0
12   0   0   0   0   0   0   0   0   0   0   1   0   0   0   1   0   0   0   0   0
13   0   0   0   0   0   0   0   0   0   0   1   1   0   1   1   0   0   0   0   0
14   0   0   0   0   0   0   0   0   0   0   0   0   1   0   0   0   0   0   0   0
15   0   0   0   0   0   0   0   0   0   0   0   1   0   0   0   0   0   0   0   0
16   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   1   0   1   0
17   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   1   1
18   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   1   0   0   0
19   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   1   0   0   0
20   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   1   1   1   0
拥有DF:

 id  friendid_1  friendid_2  friendid_3  friendid_4
  1           2           4          NA          NA
  2          NA          NA          NA          NA
  3           1           5           2          NA
  5           1           3          NA          NA
  6           9           7          NA          NA
  7           9          10          NA          NA
  9           6          NA          NA          NA
 10          NA          NA           7          NA
 12          11          15          NA          NA
 13          15          12          14          11
 14          13          NA          NA          NA
 15          12          NA          NA          NA
 17          19          20          NA          NA
 18          17          NA          NA          NA
 20          18          17          19          NA
需要矩阵:

     1   2   3   4   5   6   7   8   9   10  11  12  13  14  15  16  17  18  19  20
 1   0   1   0   1   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
 2   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
 3   1   1   0   0   1   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
 4  10  10  10  10  10  10  10  10  10  10  10  10  10  10  10  10  10  10  10  10
 5   1   0   1   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
 6   0   0   0   0   0   0   1   0   1   0   0   0   0   0   0   0   0   0   0   0
 7   0   0   0   0   0   0   0   0   1   1   0   0   0   0   0   0   0   0   0   0
 8  10  10  10  10  10  10  10  10  10  10  10  10  10  10  10  10  10  10  10  10
 9   0   0   0   0   0   1   0   0   0   0   0   0   0   0   0   0   0   0   0   0
10   0   0   0   0   0   0   1   0   0   0   0   0   0   0   0   0   0   0   0   0
11  10  10  10  10  10  10  10  10  10  10  10  10  10  10  10  10  10  10  10  10
12   0   0   0   0   0   0   0   0   0   0   1   0   0   0   1   0   0   0   0   0
13   0   0   0   0   0   0   0   0   0   0   1   1   0   1   1   0   0   0   0   0
14   0   0   0   0   0   0   0   0   0   0   0   0   1   0   0   0   0   0   0   0
15   0   0   0   0   0   0   0   0   0   0   0   1   0   0   0   0   0   0   0   0
16  10  10  10  10  10  10  10  10  10  10  10  10  10  10  10  10  10  10  10  10
17   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   1   1
18   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   1   0   0   0
19  10  10  10  10  10  10  10  10  10  10  10  10  10  10  10  10  10  10  10  10
20   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   1   1   1   0
我们可以使用带有setdiff的矩阵的row.name,并将那些不在“DF”中的“id”分配给10

数据 我们可以使用带有setdiff的矩阵的row.name,并将那些不在“DF”中的“id”分配给10

数据
我们还可以基于数据帧在矩阵上使用索引:

#Create index
i <- 1:NROW(Matrix)
#Contrast with df
j <- which(!i %in% df$id)
#Replace
Matrix[j,] <- 10
使用的一些数据:

#Data1
Matrix <- structure(c(0L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
1L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 1L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 1L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 1L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 
0L, 0L, 0L), .Dim = c(20L, 20L), .Dimnames = list(c("1", "2", 
"3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", 
"15", "16", "17", "18", "19", "20"), c("1", "2", "3", "4", "5", 
"6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", 
"17", "18", "19", "20")))

#Data2
df <- structure(list(id = c(1L, 2L, 3L, 5L, 6L, 7L, 9L, 10L, 12L, 13L, 
14L, 15L, 17L, 18L, 20L), friendid_1 = c(2L, NA, 1L, 1L, 9L, 
9L, 6L, NA, 11L, 15L, 13L, 12L, 19L, 17L, 18L), friendid_2 = c(4L, 
NA, 5L, 3L, 7L, 10L, NA, NA, 15L, 12L, NA, NA, 20L, NA, 17L), 
    friendid_3 = c(NA, NA, 2L, NA, NA, NA, NA, 7L, NA, 14L, NA, 
    NA, NA, NA, 19L), friendid_4 = c(NA, NA, NA, NA, NA, NA, 
    NA, NA, NA, 11L, NA, NA, NA, NA, NA)), class = "data.frame", row.names = c(NA, 
-15L))

我们还可以基于数据帧在矩阵上使用索引:

#Create index
i <- 1:NROW(Matrix)
#Contrast with df
j <- which(!i %in% df$id)
#Replace
Matrix[j,] <- 10
使用的一些数据:

#Data1
Matrix <- structure(c(0L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
1L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 1L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 1L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 1L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 
0L, 0L, 0L), .Dim = c(20L, 20L), .Dimnames = list(c("1", "2", 
"3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", 
"15", "16", "17", "18", "19", "20"), c("1", "2", "3", "4", "5", 
"6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", 
"17", "18", "19", "20")))

#Data2
df <- structure(list(id = c(1L, 2L, 3L, 5L, 6L, 7L, 9L, 10L, 12L, 13L, 
14L, 15L, 17L, 18L, 20L), friendid_1 = c(2L, NA, 1L, 1L, 9L, 
9L, 6L, NA, 11L, 15L, 13L, 12L, 19L, 17L, 18L), friendid_2 = c(4L, 
NA, 5L, 3L, 7L, 10L, NA, NA, 15L, 12L, NA, NA, 20L, NA, 17L), 
    friendid_3 = c(NA, NA, 2L, NA, NA, NA, NA, 7L, NA, 14L, NA, 
    NA, NA, NA, 19L), friendid_4 = c(NA, NA, NA, NA, NA, NA, 
    NA, NA, NA, 11L, NA, NA, NA, NA, NA)), class = "data.frame", row.names = c(NA, 
-15L))

这是另一个基本的R选项

MatrixOut <- matrix(10,nrow(Matrix),ncol(Matrix))
MatrixOut[DF$id,] <- Matrix[DF$id,]

这是另一个基本的R选项

MatrixOut <- matrix(10,nrow(Matrix),ncol(Matrix))
MatrixOut[DF$id,] <- Matrix[DF$id,]
MatrixOut <- matrix(10,nrow(Matrix),ncol(Matrix))
MatrixOut[DF$id,] <- Matrix[DF$id,]