Прошу прощения за этот глупый вопрос, я боюсь, что ответ очевиден, но я действительно не могу его увидеть.Преобразование вектора в вектор с таким же именем в R
A want to применить функцию в списке векторов, используя lapply
. Эта функция должна преобразовывать векторные элементы. Первый элемент вектора должен оставаться нетронутым, и каждый следующий элемент должен быть суммой этого и предыдущего элементов. Мой код:
trans<-function(x){
if (length(x)==1){
x<<-x
}
else{
x[1]<<-x[1]
for (i in 2:length(x)){
x[i]<<-x[i-1]+x[i]}
}}
Проблема заключается в том, что входящий вектор вообще не затронут выходом. Но, если я пишу код, как:
trans<-function(x){
b<<-NULL
if (length(x)==1){
b<<-x
}
else{
b[1]<<-x[1]
for (i in 2:length(x)){
b[i]<<-x[i-1]+x[i]}
}}
чем вектор b
является Rigth преобразование входящего вектора. Но поскольку я хочу lapply
эту функцию в списке, мне нужно просто преобразовать эти векторы, а не создавать новые.
Можете ли вы помочь мне исправить это?
пример: входящий вектор
a<-c(1,2,3,5)
должны быть преобразованы в:
(1,3,5,8)
Вторая функция работает хорошо, проблема заключается в том, что мне нужно создать вектор b
для этого.
Что-то вроде 'lapply (listOfVectors, cumsum)'? – digEmAll
Нет, 'cumsum()' суммировать все предыдущие элементы. Я хочу суммировать только i-й элемент с i-1-м элементом. – Bobesh
Итак, 'lapply (listOfVectors, function (v) {v + c (0, head (v, -1))})'? – digEmAll