1
私は、dplyr rowwise mutateとカスタム関数を使用して1つの列に結合したい2つの列を持つデータセットを持っています。特定のパターンに一致する2番目の行(最初の行または後続の行ではない)では、不思議なことに、NAを戻り値として取得します。dplyr rowwise mutate with custom function returns予期しない戻り値なし
my.func <- function(alpha, beta) {
if(!is.na(beta) & beta) {
return("c")
} else if(is.na(alpha)) {
return(as.character(NA))
} else if (alpha == "a") {
return("a")
} else if (alpha == "b") {
return("b")
} else {
return(as.character(NA))
}
}
tmp <- data.frame(obs = 1:7,
dt = c('2016-03-15 17:35:46','2016-03-15 18:45:47','2016-03-15 19:22:17','2016-03-15 19:23:45','2016-03-15 20:21:55','2016-03-15 21:20:10','2016-03-15 22:18:34'),
one = c(NA,"a","a","a","b","a","b"), two = c(NA,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE))
tmp2 <- tmp %>% rowwise() %>% mutate(three = my.func(one, two))
これは正確に同じ入力を持つ上記列のため、それは「A」をもたらし行3、列3でNAになる:次の例です。
は、あなたが「3」のrownameと第三印刷行または列を意味しています? rownameが "1"の行は、実行時の唯一のNA値であり、完全に期待しています。 (そして私はあなたが5列目を参照していると思う)。バージョンチェックの時間? –
私はdplyrバージョン0.4.3.9001を持っています –
私はこれについて本当にpuzzeldです。 'mapply(my.func、tmp $ one、tmp $ two)'は正しい結果を提供します。そして、もしあなたが最初の 'NA'を変更するなら、それは正しいでしょう。それは' rowwise() 'と何か関係があるかもしれません。 – Alex