2016-11-08 12 views
0

データフレームのいくつかの列に基づいてパターンを生成したいと考えています。 サンプルデータセットは次のようになります。私は、データフレームの行数に基づいて反復処理することができますどのようにデータフレームに基づいたパターン生成R

if every domain = "ebay.com", id in (21000): 
    rand_val:0000807 
cost: 0.82 
elif every domain = "facebook.com", id in (23400): 
    rand_val:0000808 
cost: 0.40 
elif every domain = "auto.com", id in (26800): 
    rand_val:0000809 
cost: 0.57 

domain <- c('ebay.com','facebook.com','auto.com') 
id <- c(21000, 23400, 26800) 
cost <- c(0.82,0.40,0.57) 
rand_val <- c(0000807,0000808,0000809) 
test_data <- data.frame(domain,id,cost,rand_val) 

私は、テキスト出力として、このパターンを生成するために探していますTEST_DATAの列に基づいてこのパターンを生成する。

答えて

1

あなたは、このためにsepcollapsepasteを使用することができます。

res <- paste('if every domain = "',test_data$domain, '", id in (', test_data$id, '): 
    rand_val:', test_data$rand_val, ' 
cost: ', test_data$cost, sep="", collapse = " 
el") 
cat(res) 

if every domain = "ebay.com", id in (21000): 
    rand_val:807 
cost: 0.82 
elif every domain = "facebook.com", id in (23400): 
    rand_val:808 
cost: 0.4 
elif every domain = "auto.com", id in (26800): 
    rand_val:809 
cost: 0.57 
+0

'すべてのドメイン= \ "ebay.com \" であれば、ID(21000)に:\ nはrand_val:807 \ ncost:0.82 \すべてのドメイン= \ "auto.com \"、IDは(26800):\ n rand_val:すべてのドメイン= \ "facebook.com \"、idは(23400):\ n rand_val:808 \ ncost:0.4 \ 809 \ ncost:0.57'これはあなたの入力に基づいているので、新しい行の代わりに\ nを取得します。また、\ "ebay.com \"、\ "facebook.com \"をドメインとして取得します。望ましい結果を生み出すためにコードを微調整するのに役立つことができますか? – PSraj

+0

はい、これは完璧に動作します、ありがとうございます。しかし、cat()関数も同様の結果を生成することができます。 '' test_data $ id ''、test_data $ domain ''、id ''、test_data $ id '') :\ n検索_値: '、test_data $ rand_val、' \ ncost: '、test_data $ cost、sep = ""、collapse = " el")) 'とにかく助けてくれてありがとう。 – PSraj

+0

あなたはそうです、実際に 'write'は' cat'を呼び出します – HubertL

関連する問題