0
大きなdata.tableで終了し、行ごとに関数を適用したい。それはdata.frameで動作し、適用されますが、私はdata.tableで解決策を得たいと思います。 data.tableに行単位で関数を適用する
>sdata
Z_2016_11 Z_2016_10 Z_2016_09 Z_2016_08 Z_2016_07
1: 21 32 15 NA NA
2: 6 17 NA NA NA
3: 2 7 9 230 NA
4: 5 19 28 30 0
5: 16 29 30 105 0
6: 2 0 0 0 NA
は、私はそれを次の方法を試してみました
trimt <- function(tmp){
c(rev(tmp[!is.na(tmp)]), rep(NA, times = length(tmp) - length(tmp[!is.na(tmp)])))
}
sdata[,trimt(get(grep("Z", names(sdata), value = TRUE))),by=1:nrow(sdata)]
ので
t(apply(sdata[, grep("Z", names(sdata), value = TRUE),with=FALSE],1,
function(tmp) c(rev(tmp[!is.na(tmp)]),
rep(NA, times = length(tmp) - length(tmp[!is.na(tmp)])))))
を使用することができますdata.frameで
>sdata
Z_1 Z_2 Z_3 Z_4 Z_5
1: 15 32 21 NA NA
2: 17 6 NA NA NA
3: 230 9 7 2 NA
4: 0 30 28 19 5
5: 0 105 30 29 16
6: 0 0 0 2 NA
を以下のようにそれを注文したいです私はそれを簡単に注文することができますが、ベクトルだけが返されます。 data.tableを使用して新しい行列を適用して返すことは可能ですか?
を使用することができ、なぜあなたは15 32 21を持っているか、順序は適切ではない」 – akrun
私は、NASを削除する、その行の残りの部分を逆にし、欠損値のNAsを追加して行を置き換えます。 – Frank123
data.tableに基づいてソリューションを投稿しました – akrun