2016-11-08 69 views
0

我正在尋找基於數據幀的某些列生成模式。 樣本數據集可能是:基於我期待產生這種模式作爲文本輸出TEST_DATA列基於R中的數據幀生成模式

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) 

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 

我怎樣才能根據數據幀中的行數迭代產生這種模式。

回答

1

您可以使用pastesepcollapse此:

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 \」,身份證件(21000):\ n rand_val:807 \ ncost:0.82 \ nelif every domain = \「facebook.com \」,id(23400):\ n rand_val:808 \ ncost:0.4 \ nelif每個網域= \「auto.com \」,id爲(26800):\ n rand_val: 809 \ ncost:0.57'這是我基於你的輸入,所以我得到一個\ n而不是一個新的行,這也是:\「ebay.com \」,\「facebook.com \」作爲域。你能幫助調整你的代碼來產生理想的結果嗎? – PSraj

+0

是的,這是完美的,謝謝。但是我看到我們也可以使用cat()函數,它會產生相同的結果。'cat(paste('if if each domain ='',test_data $ domain,'「,id in(',test_data $ id,') :\ nrand_val:',test_data $ rand_val,'\ ncost:',test_data $ cost,sep =「」,collapse =「 el」))''。無論如何感謝您的幫助。 – PSraj

+0

你說得對,實際上'寫'調用'貓' – HubertL