我有一个清单:
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
我究竟做错了什么?:(
此致!