リストがあります:
xxx
[[1]]
[1] 1899 99 99 97 97 97 97 97
[[2]]
[1] 86 86 86 86 86 86 86
[[3]]
[1] 1897 97 97 97 97 97 97 97 97 97
[[4]]
[1] 3 3 3 3
[[5]]
[1] 1883 83 83 83 83 83 83 83 83 83
Dput:
list(c(1899L, 99L, 99L, 97L, 97L, 97L, 97L, 97L), c(86L, 86L,
86L, 86L, 86L, 86L, 86L), c(1897L, 97L, 97L, 97L, 97L, 97L, 97L,
97L, 97L, 97L), c(3L, 3L, 3L, 3L), c(1883L, 83L, 83L, 83L, 83L,
83L, 83L, 83L, 83L, 83L))
次に、各リスト要素で最も頻度の高い値を選択し、その値をリスト要素の長さだけ繰り返します。
xxxh=lapply(xxx,function(x) {
a=max(rle(sort(x))[[1]])
b=rle(sort(x))[[2]][which(rle(sort(x))[[1]]==a)]
hh=rep(b,length(x))
return(hh)
})
警告が表示されます"In max(rle(sort(x))[[1]]) : no non-missing arguments to max; returning -Inf"
結果は
xxxh
[[1]]
[1] 97 97 97 97 97 97 97 97
[[2]]
[1] 86 86 86 86 86 86 86
[[3]]
[1] 97 97 97 97 97 97 97 97 97 97
[[4]]
[1] 3 3 3 3
[[5]]
[1] 83 83 83 83 83 83 83 83 83 83
次に、各リスト要素の最初の要素のいずれかまたはに応じて、paste
上記のリスト要素の値を試します。18
190
nchar
xxxm=lapply(xxxh,function(x) {
kk=x[1]
if(nchar(kk==0)) { kk<-0 }
else {
if (nchar(kk)==1) {as.numeric(paste(190,kk,sep=""))} else {
if (nchar(kk)==2) as.numeric(paste(18,kk,sep=""))}}
}
)
しかし、私は得るだけですzeros
...
xxxm
[[1]]
[1] 0
[[2]]
[1] 0
[[3]]
[1] 0
[[4]]
[1] 0
[[5]]
[1] 0
私は取得したい:
xxxm
[[1]]
[1] 1897
[[2]]
[1] 1896
[[3]]
[1] 1897
[[4]]
[1] 1903
[[5]]
[1] 1883
私は何を間違っていますか?:(
よろしくお願いします!