替换(重新编码)列表中的值

Ada*_*dam 4 r

A具有具有以下结构的列表.

mylist=list(y~ A,
y ~ A+B,
y ~ A+B+C)
Run Code Online (Sandbox Code Playgroud)

我想“y “ 用a 替换(重新编码)“z”.我的目标是

mylist=list(z~ A,
z ~ A+B,
z ~ A+B+C)
Run Code Online (Sandbox Code Playgroud)

问:如何替换(重新编码)列表中的值?

我试过这个:

for i in range(len(mylist)):
  mylist[i] = mylist[i].replace('y','z')
Run Code Online (Sandbox Code Playgroud)

不管用

NJB*_*rgo 13

update函数对公式很有用.

只需包含一个.表示要保留的任何公式方面.因此,对于您的问题,以下是一个快速的单行.

lapply(mylist, update, new = z~.)

  • 这似乎是最好的选择.我不知道`update`有一个`update.formula`方法 (2认同)

Dav*_*urg 6

我建议使用R内置的公式操作功能.这允许我们在不使用正则表达式的情况下分别对fromula的不同术语进行操作

lapply(mylist, function(x) reformulate(as.character(terms(x))[3], "z"))
# [[1]]
# z ~ A
# <environment: 0x59c6040>
#   
# [[2]]
# z ~ A + B
# <environment: 0x59c0308>
#   
# [[3]]
# z ~ A + B + C
# <environment: 0x59bb7b8>
Run Code Online (Sandbox Code Playgroud)