2017-06-27 10 views
0

本質的に、私は感情のリストをとり、リスト上の各感情を6回複製してベクトルに追加しようとしています。たとえば:forループがリスト全体を反復処理しないのはなぜですか?

emotions<-c("Happy","Sad","Angry") 

は、次のようになります。これを行うには今

emotions2<-c("Happy","Happy","Happy","Happy","Happy","Happy","Sad","Sad","Sad","Sad","Sad","Angry","Angry","Angry","Angry","Angry","Angry") 

、私はループのためではなく、それだけで、ベクトルを作成し、 emotions2を最初の感情を複製しています何らかの理由で使用しています< -c(「ハッピー」、「ハッピー」、「ハッピー」、「ハッピー」、「ハッピー」、「ハッピー」)。

私のコードは次のようになります。 pmd.df3は私のデータフレームであり、Emotionsはこの情報を格納する新しい列です。

pmd.df3$Emotions<-(
    for(ele in emotions){ 
     new.column<-replicate(6,ele) 
     print(new.column) 
    } 
    ) 

お手伝いがあれば教えてください。

+0

どのようなプログラミング言語を使用しているのでしょうか? –

+0

提案:あなたのコードが入っているプログラミング言語について言及してください。正しい開発者があなたのコードを見ることができるように、ソリューションをより速く得るのに役立ちます。常に適切な種類のタグで質問にタグを付けます。 –

+0

あなたは正しいです - 私の間違い!私に思い出させてくれてありがとう。 –

答えて

0

それを達成するために、あなたが(リストの結果のリストを平らにする)lapply(リスト/ベクトルの各要素に関数を適用するため)とunlistを使用することができます。

pmd.df3$Emotions <- unlist(lapply(emotions, function(x) { rep(x, 6) })) 

全例:

emotions <- c("Happy", "Sad", "Angry") 
pmd.df3 = data.frame(id = seq(1, 18)) 

pmd.df3$Emotions <- unlist(lapply(emotions, function(x) { rep(x, 6) })) 
pmd.df3 
# id Emotions 
# 1 1 Happy 
# 2 2 Happy 
# 3 3 Happy 
# 4 4 Happy 
# 5 5 Happy 
# 6 6 Happy 
# 7 7  Sad 
# 8 8  Sad 
# 9 9  Sad 
# 10 10  Sad 
# 11 11  Sad 
# 12 12  Sad 
# 13 13 Angry 
# 14 14 Angry 
# 15 15 Angry 
# 16 16 Angry 
# 17 17 Angry 
# 18 18 Angry 
+0

これはうまくいった!助けてくれてありがとう。 –

+0

私のコードがうまくいかなかった理由を教えてもらえますか?私が「印刷」と言ったときに働いていましたが、ベクターとして保存したらただちにすべての感情を削除しましたが、最初のものは6回複製しました。 –

+0

@AndrewColin私はあまりにもあなたがしたようにコードで 'print'を使うことに慣れていませんが、私は考えています*あなたはすべての感情を単一のベクトルに集約していないと思います(' pmd.df3 $ Emotions < - は複数ではなく単一のベクトルを期待している)。また、私の答えが正しい場合は、それを合格とマークすることが自由です;) –

0

shambalambalaの答えをピギーバックするために、repはlapplyやforループを必要とせずにこれをネイティブに処理できます。

emotions <- c("Happy", "Sad", "Angry") 
pmd.df3 = data.frame(id = seq(1, 18)) 
pmd.df3$Emotions <- rep(emotions, each = 6) 

    id Emotions 
1 1 Happy 
2 2 Happy 
3 3 Happy 
4 4 Happy 
5 5 Happy 
6 6 Happy 
7 7  Sad 
8 8  Sad 
9 9  Sad 
10 10  Sad 
11 11  Sad 
12 12  Sad 
13 13 Angry 
14 14 Angry 
15 15 Angry 
16 16 Angry 
17 17 Angry 
18 18 Angry 
+0

これも同様に機能しました。このオプションを共有していただきありがとうございます! –

関連する問題