把包起来就行了
apply
分属
{}
阻止代码
data.frame('col1' = c('C', 'A', 'B', 'A'), 'col2' = c(1,2,3,4)) %>% {
apply(as.matrix(.),
1,
function(ii) {
merge(data.frame('xx' = sample(letters[1:10], 5, replace = T), 'val1' = 1:5),
data.frame('xx' = sample(letters[1:5], 5, replace = T), 'val2' = 21:25),
by = 'xx', all = T) %>%
mutate('Info' = ii['col1']) %>%
`colnames<-`(c('yy0', 'yy1', 'yy2', 'yy3'))
})}
-输出
[[1]]
yy0 yy1 yy2 yy3
1 a 1 22 C
2 b 5 NA C
3 c NA 25 C
4 e NA 21 C
5 e NA 23 C
6 e NA 24 C
7 h 4 NA C
8 j 2 NA C
9 j 3 NA C
[[2]]
yy0 yy1 yy2 yy3
1 a 1 22 A
2 a 1 23 A
3 a 2 22 A
4 a 2 23 A
5 b NA 21 A
6 b NA 25 A
7 c 5 NA A
8 d NA 24 A
9 e 4 NA A
10 j 3 NA A
[[3]]
yy0 yy1 yy2 yy3
1 a NA 25 B
2 b NA 24 B
3 c NA 22 B
4 d 4 23 B
5 d 5 23 B
6 e NA 21 B
7 g 2 NA B
8 h 1 NA B
9 h 3 NA B
[[4]]
yy0 yy1 yy2 yy3
1 a 4 22 A
2 a 4 23 A
3 b NA 25 A
4 d NA 21 A
5 e 3 24 A
6 f 1 NA A
7 h 5 NA A
8 j 2 NA A
如果需要父数据集,请创建一个对象
data.frame('col1' = c('C', 'A', 'B', 'A'), 'col2' = c(1,2,3,4)) %>% { tmp <- .
apply(as.matrix(.),
1,
function(ii) {
merge(data.frame('xx' = sample(letters[1:10], 5, replace = T), 'val1' = 1:5),
data.frame('xx' = sample(letters[1:5], 5, replace = T), 'val2' = 21:25),
by = 'xx', all = T) %>%
mutate('Info' =tmp[['col1']][which.min(tmp[['col2']])]) %>%
`colnames<-`(c('yy0', 'yy1', 'yy2', 'yy3'))
})}
-输出
[[1]]
yy0 yy1 yy2 yy3
1 a NA 21 C
2 a NA 22 C
3 b 5 23 C
4 b 5 24 C
5 c 4 NA C
6 d 1 25 C
7 f 3 NA C
8 g 2 NA C
[[2]]
yy0 yy1 yy2 yy3
1 a 4 22 C
2 a 4 24 C
3 c 2 21 C
4 d NA 23 C
5 e NA 25 C
6 g 3 NA C
7 h 5 NA C
8 i 1 NA C
[[3]]
yy0 yy1 yy2 yy3
1 a 2 22 C
2 c 3 21 C
3 c 3 24 C
4 c 3 25 C
5 c 4 21 C
6 c 4 24 C
7 c 4 25 C
8 e NA 23 C
9 i 5 NA C
10 j 1 NA C
[[4]]
yy0 yy1 yy2 yy3
1 a 1 NA C
2 b NA 24 C
3 c 3 23 C
4 c 3 25 C
5 d 5 NA C
6 e NA 21 C
7 e NA 22 C
8 h 2 NA C
9 h 4 NA C