2016-11-08 55 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