У меня проблема с циклическим повторением функции which () над списком фреймов данных. Мне нужно заменить все числа> 1 на 1. Вот мой код.
mylist_b <- lapply(mylist_a, function(x){
x[which(x>1)] <- 1
})
Вот один из моих фреймов данных mylist_a
D1 D2 D3
a 0.68659264 1.047092e+01 1.0009219
b 0.02358574 7.992743e-04 0.3253237
c 5.23294642 1.130614e+01 5.6566890
d 2.86947631 7.860165e+00 15.0000000
e 8.09922178 8.196586e+00 15.0000000
f 15.00000000 1.500000e+01 1.8389688
Когда я запускаю свой код, я получаю mylist_b, но это список числовых векторов с только одним значением для каждоговектор.
> mylist_b$dataframe_a
[1] 1
> class(mylist_b$dataframe_a)
[1] "numeric"
Вместо этого, когда я запускаю функцию which () на каждом отдельном фрейме данных, она отлично работает
mylist_a$dataframe_a[which(mylist_a$dataframe_a>1)] <- 1
вот результат
D1 D2 D3
a 6.865926e-01 1.000000e+00 1.000000e+00
b 2.358574e-02 7.992743e-04 3.253237e-01
c 1.000000e+00 1.000000e+00 1.000000e+00
d 1.000000e+00 1.000000e+00 1.000000e+00
e 1.000000e+00 1.000000e+00 1.000000e+00
f 1.000000e+00 1.000000e+00 1.000000e+00
Может кто-нибудь помочьс этим?