2016-04-10 19 views
-1

Aşağıdaki örnekte, i.want.them.all, 5'ten 14'e kadar 10 sayıyı nasıl alabilir?ifelse() öğesine benzer bir yapı var mı, sadece ilk olanı değil tüm öğeleri döndürüyor?

control.me <- 0 # or 1 
a.lot.of.elements <- c(5:14) 
i.want.them.all <- ifelse(control.me == 1, a.lot.of.elements, a.lot.of.elements - 10) 
print(i.want.them.all) 
[1] 5 

Böyle çalışan bir yapı var mı? :

a.lot.of.elements <- c(5:14) 
i.want.them.now <- magic.construct(control.me == 1, a.lot.of.elements, a.lot.of.elements - 10) 
print(i.want.them.now) 
[1] 5 6 7 8 9 10 11 12 13 14 

Değilse, ne yapmak istediğimi gerçekleştirebilirim?

+1

bir 'uzunluğunda durumunuz sonuçları == 1' "mantıklı", kullanmak olsaydı basit bir' if (testi) evet hayır hayır. "ifelse", "testin", –

+0

çıktısının çoğu özelliğini ("length" dahil) belirlediğini belirtir. Muhtemelen 'help (ifelse)' –

cevap

0

Belki sadece test seq_along herhangi bir pozitif tam sayı her zaman TRUE olarak değerlendirecek tarihi:

> i.want.them.now <- ifelse(seq_along(a.lot.of.elements), a.lot.of.elements, character()) 
> i.want.them.now 
[1] 5 6 7 8 9 10 11 12 13 14 
+0

'u okumalısınız, sorumu güncelledim. ifelse() – pidosaurus

+0

'ifelse' nin ilk argümanı ile aynı uzunluktaki değerleri döndüren bir işlev olduğu zaman bir kontrol yapısı olmalıdır." eğer "bir kontrol yapısıysa (aynı zamanda bir işlev de olsa). 'If (control.me == 1) {a.lot.of.elements} 'seçeneğini kullanabileceğinizi öneren bir yorum var (silindi). (Ifelse'de değişiklik öneren çok uzak olmazsınız.) –