2016-04-13 14 views
1

Ich habe eine ziemlich kleine Frage:Überschreiben einzelne entsprechende Elemente zwischen zwei Listen

Stellen zwei Listen „default“ und „Beispiel“, wird die jeweils aus 5 Elementen mit identischen Namen („P1“, „P2“, p3" , ‚p4‘ p5).

Bei ‚p-Wert‘ als Beispiel einen Wert zugewiesen haben, wird dieser Wert bleiben.

Falls ein ‚p-Wert‘ hat keinen Wert zugewiesen (NA), sollte der entsprechende "p-Wert" der Standard verwendet werden, um die Lücke zu ersetzen.

Ich weiß Sie könnten jedes Element mit einer for-Schleife durchlaufen und eine if-Schleife innerhalb der for-Schleife konstruieren, aber gibt es vielleicht eine elegantere Lösung? Hier

ist ein Beispielfall:

example=list(p1=2,p2=3,p3=4,p4=NA,p5=NA) 
default=list(p1=26,p2=34,p3=43,p4=11,p5=98) 
+2

Bitte teilen Sie Ihre Daten, anstatt sie zu beschreiben. – mtoto

+1

Subset und ersetzen Sie mit 'is.na()'. soething wie 'Beispiel [is.na (Beispiel)]' – Jimbou

+0

Möglicherweise in Verbindung stehender Pfosten: http://stackoverflow.com/questions/19253820/how-to-implement-coalesce-efficiently-in-r – zx8754

Antwort

2

Try this:

# assign matching p-value from default 
example[ is.na(example) ] <- default[ is.na(example) ] 

# result 
example 

# $p1 
# [1] 2 
# 
# $p2 
# [1] 3 
# 
# $p3 
# [1] 4 
# 
# $p4 
# [1] 11 
# 
# $p5 
# [1] 98 
Verwandte Themen