2016-06-30 37 views
2

假設我們有如下的數據幀:更換整個兩列相同的字符串與來自不同列在一個數據幀中的R串

test<-data.frame(v1=c(1:10),v2=c(rep("a x",10)),v3=c(rep(c("a b","a c","a d","a e","a f"),2)),v4=c((rep("p",5)),rep("q",5))) 

基本上,我們需要替換字符串「一個」在列4中提到弦2列3的結果數據幀最好應該是這樣的:

result<-data.frame(v1=c(1:10),v2=c(rep("p x",5),rep("q x",5)),v3=c("p b","p c","p d","p e","p f","q b","q c","q d","q e","q f"),v4=c((rep("p",5)),rep("q",5))) 

曾嘗試以下,以獲得相同的:

for (i in 1:nrow(test)) 
{ 
test[i,2]<-gsub("a",test[i,4],test[,2]) 
test[i,3]<-gsub("a",test[i,4],test[,3]) 
} 

也嘗試過使用apply函數,但無法達到預期的結果。

在這方面的任何幫助將不勝感激。提前致謝!

回答

1

我們可以遍歷列,刪除「a」和paste與「V4」

test[2:3] <- lapply(test[2:3], function(x) paste0(test$v4, sub("a", "", x))) 
1

也許這樣? (不知道如何仿製你所需要的代碼是)

test2 <- test 
test2$v2 <- mapply(gsub , "a" , test$v4 , test$v2) 
test2$v3 <- mapply(gsub , "a" , test$v4 , test$v3) 
相關問題