У меня есть два dataframes
следующим образом:
df1 <- read.table(text = "Source Signal Target
A no B
B yes C
C no D
D no A
E yes F
F yes G
G no E", header = T)
df2 <- read.table(text = "Source Signal Target
A no B
B yes C
E yes F
F yes G", header = T)
Я объединил df1
и df2
: interactions <- merge(df1, df2)
, а затем я пытаюсь match
каждый Source
и Target
с df3
.
df3 <- read.table(text = "Symbol ID Name
A 11 LetterA
C 13 LetterC
D 14 LetterD
F 16 LetterF
G 17 LetterG", header = T)
И я получаю следующий вывод:
Source
Symbol ID Name
1 A 11 LetterA
NA <NA> NA <NA>
NA.1 <NA> NA <NA>
4 F 16 LetterF
Так что я хочу replace
NA
с «оригиналом»ввод отображается в df2
и получается вывод следующим образом:
Symbol ID Name
A 11 LetterA
B NA B
E NA E
F 16 LetterF
Я пытался с помощью:
Source <- df3[match(interactions$Source, df3$Symbol),-4]
my.na <- is.na(Source$Name)
Source$Name[my.na] <- interactions$Source[my.na]
Source$Symbol[my.na] <- interactions$Source[my.na]
Но я получаю числа вместо символов.Есть ли что-то, что мне не хватает?Можно ли заменить объединенное значение без использования какой-либо библиотеки?