我有一個列表:如何修改列表中的數值
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
列表中的元素的那些值以上具有取決於每個列表元素的第一元素的nchar
任18
或190
:
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
我在做什麼錯:(
順祝商祺!
Aaaah謝謝!我得到了codeblind ... – user1665355