R 使用不存在的值生成数据帧
我需要以这样一种方式附加到现有数据帧,即如果R 使用不存在的值生成数据帧,r,R,我需要以这样一种方式附加到现有数据帧,即如果c1dataframe的c1.b列没有a1向量的值,则需要生成该非当前值 例如: #c1 dataframe and a1 vector c1 <- data.frame(c1.a = c(1),c1.b = c("1a"),c1.c = c(3)) a1 <- c("1a","1b","1c") 我们可以使用setdiff获取'a1'中不是'c1.b'列的名称,然后rep根据'v1'的长度对'df'和'v1'进行复制,rbind使用
c1
dataframe的c1.b
列没有a1
向量的值,则需要生成该非当前值
例如:
#c1 dataframe and a1 vector
c1 <- data.frame(c1.a = c(1),c1.b = c("1a"),c1.c = c(3))
a1 <- c("1a","1b","1c")
我们可以使用
setdiff
获取'a1'中不是'c1.b'列的名称,然后rep
根据'v1'的长度对'df'和'v1'进行复制,rbind
使用原始的'c1'
v1 <- setdiff(a1, c1$c1.b)
df1 <- df[rep(seq_len(nrow(df)), length(v1)),]
df1$c1.b <- rep(v1, each = nrow(df))
c1 <- rbind(c1, df1)
row.names(c1) <- NULL
c1
# c1.a c1.b c1.c
#1 1 1a 3
#2 0 1b 0
#3 0 1b 0
#4 0 1b 0
#5 0 1b 0
#6 0 1b 0
#7 0 1c 0
#8 0 1c 0
#9 0 1c 0
#10 0 1c 0
#11 0 1c 0
c1是终点,df只是说明生成值的方式。因此,加速输出为c1@akrunyes-akrun。我创建c1是因为最初它没有a1的所有值,所以后来(预期输出)它被附加到c1上,而没有当前值
> c1
c1.a c1.b c1.c
1 1 1a 3
2 0 1b 0
3 0 1b 0
4 0 1b 0
5 0 1b 0
6 0 1b 0
7 0 1c 0
8 0 1c 0
9 0 1c 0
10 0 1c 0
11 0 1c 0
v1 <- setdiff(a1, c1$c1.b)
df1 <- df[rep(seq_len(nrow(df)), length(v1)),]
df1$c1.b <- rep(v1, each = nrow(df))
c1 <- rbind(c1, df1)
row.names(c1) <- NULL
c1
# c1.a c1.b c1.c
#1 1 1a 3
#2 0 1b 0
#3 0 1b 0
#4 0 1b 0
#5 0 1b 0
#6 0 1b 0
#7 0 1c 0
#8 0 1c 0
#9 0 1c 0
#10 0 1c 0
#11 0 1c 0
library(dplyr)
library(tidyr)
df %>%
mutate(c1.b = list(setdiff(a1, c1$c1.b))) %>%
unnest(c(c1.b)) %>%
bind_rows(c1, .)