Rでリスト内包を実装する方法はありますか? Haskellではリスト内の理解をR
sum([x for x in range(1000) if x % 3== 0 or x % 5== 0])
同じ:Pythonのような
sum [x| x<-[1..1000-1], x`mod` 3 ==0 || x `mod` 5 ==0 ]
Rでこれを適用する実用的な方法は何ですか?
ニック
Rでリスト内包を実装する方法はありますか? Haskellではリスト内の理解をR
sum([x for x in range(1000) if x % 3== 0 or x % 5== 0])
同じ:Pythonのような
sum [x| x<-[1..1000-1], x`mod` 3 ==0 || x `mod` 5 ==0 ]
Rでこれを適用する実用的な方法は何ですか?
ニック
何か?
l <- 1:1000
sum(l[l %% 3 == 0 | l %% 5 == 0])
はい、リストの内包はRで可能である。このような
sum((1:1000)[(1:1000 %% 3) == 0 | (1:1000 %% 5) == 0])
そして、(種類の)スカラ座の-理解のために:
for(i in {x <- 1:100;x[x%%2 == 0]})print(i)
Scalaのように 'for'ループから直接' yield'することは可能ですか? – bluenote10
それは 'sapply' [family functions](http://www.r-bloggers.com/using-apply-sapply-lapply-in-r/)' x < - sapply(1:10、関数(x)x * x) ' – PedroB
別の方法
sum(l<-(1:1000)[l %% 3 == 0 | l %% 5 == 0])
ありがとう! (演算子の前後にスペースを入れると、%%は可読性を向上させることがあります) – Nick
将来の可読性のためにスペースを含む編集済み回答。 – MadScone
違いはありませんが、これは整数を使用し、別のベクトルを作成しないので、これは速くなります。 'sum(l *(l %% 3L == 0L | l %% 5L == 0L))' – flodel