Рекодирование на несколько кадров данных в R

(отредактировано, чтобы отразить помощь ... Я не очень хорошо справляюсь с форматированием, но ценю отзывы)

Я немного застрял на том, что подозреваю, это достаточно простая проблема. У меня есть несколько разных наборов данных, которые я загрузил в R, каждый из которых имеет разное количество наблюдений, но у всех есть две переменные с именами «A1», «A2» и «A3». Я хочу создать новую переменную в каждом из трех фреймов данных, которая содержит значение, содержащееся в «A1», если A3 содержит значение больше нуля, и значение, содержащееся в «A2», если A3 содержит значение меньше нуля. Кажется достаточно простым, верно?

Моя попытка этого кода использует эти поддельные данные:

set.seed(1)
A1=seq(1,100,length=100)
A2=seq(-100,-1,length=100)
A3=runif(100,-1,1)
df1=cbind(A1,A2,A3)

A3=runif(100,-1,1)
df2=cbind(A1,A2,A3)

Я почти на тысячу процентов уверен, что R обладает некоторой функциональностью для создания одной и той же именованной переменной в нескольких фреймах данных, но я попытался сделать это с помощью lapply:

mylist=list(df1,df2)
lapply(mylist,function(x){
  x$newVar=x$A1
  x$newVar[x$A3>0]=x$A2[x$A3>0]
  return(x)
})

Но newVar не доступен для меня, когда я выхожу из цикла lapply. Например, если я запрашиваю среднее значение для новой переменной: mean (df1 $ newVar) [1] NA Предупреждение: в mean.default (df1 $ newVar): аргумент не является числовым или логическим: возвращает NA

Любая помощь будет оценена.
Спасибо.

Ответы на вопрос(1)

Ваш ответ на вопрос