Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.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_List_For Loop - Fatal编程技术网

R 如果在两个列表的比较中缺少列表元素,则添加列表元素

R 如果在两个列表的比较中缺少列表元素,则添加列表元素,r,list,for-loop,R,List,For Loop,我有如下示例数据: DT1 <- structure(list(Province = c(1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3), Year = c(2000, 2000, 2000, 2001, 2001, 2001, 2002, 2002, 2002, 2000, 2000, 2000, 2001, 2001, 2001, 2002, 2002, 2002,

我有如下示例数据:

DT1 <- structure(list(Province = c(1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 
2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3), Year = c(2000, 
2000, 2000, 2001, 2001, 2001, 2002, 2002, 2002, 2000, 2000, 2000, 
2001, 2001, 2001, 2002, 2002, 2002, 2000, 2000, 2000, 2001, 2001, 
2001, 2002, 2002, 2002), Municipality = c("Something", "Anything", 
"Nothing", "Something", "Anything", "Nothing", "Something", "Anything", 
"Nothing", "Something", "Anything", "Nothing", "Something", "Anything", 
"Nothing", "Something", "Anything", "Nothing", "Something", "Anything", 
"Nothing", "Something", "Anything", "Nothing", "Something", "Anything", 
"Nothing"), Values = c(0.59, 0.58, 0.66, 0.53, 0.94, 0.2, 0.86, 
0.85, 0.99, 0.59, 0.58, 0.66, 0.53, 0.94, 0.2, 0.86, 0.85, 0.99, 
0.59, 0.58, 0.66, 0.53, 0.94, 0.2, 0.86, 0.85, 0.99)), row.names = c(NA, 
-27L), class = c("tbl_df", "tbl", "data.frame"))

DT2 <- structure(list(Province = c(1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 
2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3), Year = c(2000, 
2000, 2000, 2001, 2001, 2001, 2002, 2002, 2002, 2000, 2000, 2000, 
2001, 2001, 2001, 2002, 2002, 2002, 2000, 2000, 2000, 2001, 2001, 
2001, 2002, 2002, 2002), Municipality = c("Some", "Anything", 
"Nothing", "Someth.", "Anything", "Not", "Something", "Anything", 
"None", "Some", "Anything", "Nothing", "Someth.", "Anything", 
"Not", "Something", "Anything", "None", "Some", "Anything", "Nothing", 
"Someth.", "Anything", "Not", "Something", "Anything", "None"
), `Other Values` = c(0.41, 0.42, 0.34, 0.47, 0.0600000000000001, 
0.8, 0.14, 0.15, 0.01, 0.41, 0.42, 0.34, 0.47, 0.0600000000000001, 
0.8, 0.14, 0.15, 0.01, 0.41, 0.42, 0.34, 0.47, 0.0600000000000001, 
0.8, 0.14, 0.15, 0.01)), row.names = c(NA, -27L), class = c("tbl_df", 
"tbl", "data.frame"))
DT2 <- DT2[-c(5:10),]

DT1_list <- DT1%>%
  group_split(Province, Year)

DT2_list <- DT2%>%
  group_split(Province, Year)

像这样修改较小的DF

library(tidyverse)

DT2_modified <- DT1 %>% select(Province, Year) %>% group_by(Province, Year) %>% 
  slice_head() %>%
  left_join(DT2, by = c("Province", "Year"))

#Now extract your lists
DT2_list_modified <- DT2_modified %>%
  group_split(Province, Year)


#Check the code/result
> DT2_list_modified
<list_of<
  tbl_df<
    Province    : double
    Year        : double
    Municipality: character
    Other Values: double
  >
>[9]>
[[1]]
# A tibble: 3 x 4
  Province  Year Municipality `Other Values`
     <dbl> <dbl> <chr>                 <dbl>
1        1  2000 Some                   0.41
2        1  2000 Anything               0.42
3        1  2000 Nothing                0.34

[[2]]
# A tibble: 1 x 4
  Province  Year Municipality `Other Values`
     <dbl> <dbl> <chr>                 <dbl>
1        1  2001 Someth.                0.47

[[3]]
# A tibble: 1 x 4
  Province  Year Municipality `Other Values`
     <dbl> <dbl> <chr>                 <dbl>
1        1  2002 NA                       NA

[[4]]
# A tibble: 2 x 4
  Province  Year Municipality `Other Values`
     <dbl> <dbl> <chr>                 <dbl>
1        2  2000 Anything               0.42
2        2  2000 Nothing                0.34

[[5]]
# A tibble: 3 x 4
  Province  Year Municipality `Other Values`
     <dbl> <dbl> <chr>                 <dbl>
1        2  2001 Someth.                0.47
2        2  2001 Anything               0.06
3        2  2001 Not                    0.8 

[[6]]
# A tibble: 3 x 4
  Province  Year Municipality `Other Values`
     <dbl> <dbl> <chr>                 <dbl>
1        2  2002 Something              0.14
2        2  2002 Anything               0.15
3        2  2002 None                   0.01

[[7]]
# A tibble: 3 x 4
  Province  Year Municipality `Other Values`
     <dbl> <dbl> <chr>                 <dbl>
1        3  2000 Some                   0.41
2        3  2000 Anything               0.42
3        3  2000 Nothing                0.34

[[8]]
# A tibble: 3 x 4
  Province  Year Municipality `Other Values`
     <dbl> <dbl> <chr>                 <dbl>
1        3  2001 Someth.                0.47
2        3  2001 Anything               0.06
3        3  2001 Not                    0.8 

[[9]]
# A tibble: 3 x 4
  Province  Year Municipality `Other Values`
     <dbl> <dbl> <chr>                 <dbl>
1        3  2002 Something              0.14
2        3  2002 Anything               0.15
3        3  2002 None                   0.01
库(tidyverse)
DT2\u已修改%select(省,年)%%>%group\u by(省,年)%%
切片头()%>%
左联合(DT2,by=c(“省”、“年”))
#现在提取您的列表
DT2\u列表\u已修改%
分组(省,年)
#检查代码/结果
>DT2\u列表\u已修改
>[9]>
[[1]]
#一个tibble:3x4
省/自治区/其他值`
1 2000约0.41
2 1 2000 0.42
3 1 2000无0.34
[[2]]
#一个tibble:1 x 4
省/自治区/其他值`
2001年左右。0.47
[[3]]
#一个tibble:1 x 4
省/自治区/其他值`
1 2002年不适用
[[4]]
#一个tibble:2x4
省/自治区/其他值`
1.22000.42
2 2000无0.34
[[5]]
#一个tibble:3x4
省/自治区/其他值`
1 2 2001年某时。0.47
2.2.0.06
3.2 2001不是0.8
[[6]]
#一个tibble:3x4
省/自治区/其他值`
1.2.0.14
2 0.15
3.2 2002无0.01
[[7]]
#一个tibble:3x4
省/自治区/其他值`
1.3 2000约0.41
2 3 2000 0.42
3 2000无0.34
[[8]]
#一个tibble:3x4
省/自治区/其他值`
1 3 2001年某时。0.47
2.3.0.06
3 2001年不是0.8
[[9]]
#一个tibble:3x4
省/自治区/其他值`
1.3.0.14
2.3.0.15
3 2002年无0.01

我认为这将达到目的

是否要将列表中的其他值置为空白?是的,除省、年外,所有内容都应为空白。请参阅基于
tidyverse
方法而不是使用循环提出的解决方案。非常感谢!我现在正在检查我的实际数据。
library(tidyverse)

DT2_modified <- DT1 %>% select(Province, Year) %>% group_by(Province, Year) %>% 
  slice_head() %>%
  left_join(DT2, by = c("Province", "Year"))

#Now extract your lists
DT2_list_modified <- DT2_modified %>%
  group_split(Province, Year)


#Check the code/result
> DT2_list_modified
<list_of<
  tbl_df<
    Province    : double
    Year        : double
    Municipality: character
    Other Values: double
  >
>[9]>
[[1]]
# A tibble: 3 x 4
  Province  Year Municipality `Other Values`
     <dbl> <dbl> <chr>                 <dbl>
1        1  2000 Some                   0.41
2        1  2000 Anything               0.42
3        1  2000 Nothing                0.34

[[2]]
# A tibble: 1 x 4
  Province  Year Municipality `Other Values`
     <dbl> <dbl> <chr>                 <dbl>
1        1  2001 Someth.                0.47

[[3]]
# A tibble: 1 x 4
  Province  Year Municipality `Other Values`
     <dbl> <dbl> <chr>                 <dbl>
1        1  2002 NA                       NA

[[4]]
# A tibble: 2 x 4
  Province  Year Municipality `Other Values`
     <dbl> <dbl> <chr>                 <dbl>
1        2  2000 Anything               0.42
2        2  2000 Nothing                0.34

[[5]]
# A tibble: 3 x 4
  Province  Year Municipality `Other Values`
     <dbl> <dbl> <chr>                 <dbl>
1        2  2001 Someth.                0.47
2        2  2001 Anything               0.06
3        2  2001 Not                    0.8 

[[6]]
# A tibble: 3 x 4
  Province  Year Municipality `Other Values`
     <dbl> <dbl> <chr>                 <dbl>
1        2  2002 Something              0.14
2        2  2002 Anything               0.15
3        2  2002 None                   0.01

[[7]]
# A tibble: 3 x 4
  Province  Year Municipality `Other Values`
     <dbl> <dbl> <chr>                 <dbl>
1        3  2000 Some                   0.41
2        3  2000 Anything               0.42
3        3  2000 Nothing                0.34

[[8]]
# A tibble: 3 x 4
  Province  Year Municipality `Other Values`
     <dbl> <dbl> <chr>                 <dbl>
1        3  2001 Someth.                0.47
2        3  2001 Anything               0.06
3        3  2001 Not                    0.8 

[[9]]
# A tibble: 3 x 4
  Province  Year Municipality `Other Values`
     <dbl> <dbl> <chr>                 <dbl>
1        3  2002 Something              0.14
2        3  2002 Anything               0.15
3        3  2002 None                   0.01