0
我有一個有很多列的數據框,包括四個代表子類別的數據框。使用row-wise Reduate with mutate_?
data.frame(site_name=c("bla","blo","blu"), page_1=c(NA,NA,NA), page_2=c(NA,"detail_1","detail_2"), page_3=c("hello", "hola", NA), page_4=c(NA,NA,NA))
site_name page_1 page_2 page_3 page_4
1 bla NA <NA> hello NA
2 blo NA detail_1 hola NA
3 blu NA detail_2 <NA> NA
我想用一列代替所有這些'page_x'列,只顯示最右邊的非NA級別的細節。有很多行問題,但我找不到一個與NSE和Reduce一起工作的人。
在上面的例子是:
site_name page_1 page_2 page_3 page_4 page
1 bla NA <NA> hello NA hello
2 blo NA detail_1 hola NA hola
3 blu NA detail_2 <NA> NA detail_2
我認爲這將是一個很好的例子,用每行減少過度。我在單行上有一個版本,但我找不到將它應用於mutate_的方法。
Reduce(function(prec,col){ifelse(!is.na(row[col]), row[col], prec)},
grep("^page",names(row),value=T), NA)}
這不起作用(我猜 '行' 的對象是不是真的就這樣過去了):
mutate_(.dots = ~Reduce(function(prec,col){ifelse(!is.na(row[col]), row[col], prec)},
grep("^page",names(row),value=T), NA)}