如何使用 lapply 重命名列表中的单列

How to use lapply for rename single column in list

提问人:ninaPeng 提问时间:11/9/2023 最后编辑:jay.sfninaPeng 更新时间:11/9/2023 访问量:36

问:

我参考了如何重命名 data.frame 中的单个列

# df = dataframe
# old.var.name = The name you don't like anymore
# new.var.name = The name you want to get
names(df)[names(df) == 'old.var.name'] <- 'new.var.name'

我想使用这种方式(或其他重命名方式?

names(df)[names(df) == 'old.var.name'] <- 'new.var.name'

l申请多层列表重命名单列,但我不知道 它如何迭代子列表(例如在 iris1、iris2 和 iris3 之后),让子列表将列“Species”重命名为“newSpecies”。

(如果你知道lapply处理多层列表/数据帧的相关教程,也可以推荐给我。

irisData <- list(iris1 = iris, iris2 = iris, iris3 = iris)
colnames(irisData$iris1)
#[1] "Sepal.Length" "Sepal.Width" 
#[3] "Petal.Length" "Petal.Width" 
#[5] "Species"
R DataFrame 列表 lapply

评论


答:

1赞 jay.sf 11/9/2023 #1

你可以这样使用。lapply

> irisData <- lapply(irisData, \(x) {names(x)[names(x) == 'Species'] <- 'newSpecies'; x})
> lapply(irisData, head, 2)
$iris1
  Sepal.Length Sepal.Width Petal.Length Petal.Width newSpecies
1          5.1         3.5          1.4         0.2     setosa
2          4.9         3.0          1.4         0.2     setosa

$iris2
  Sepal.Length Sepal.Width Petal.Length Petal.Width newSpecies
1          5.1         3.5          1.4         0.2     setosa
2          4.9         3.0          1.4         0.2     setosa

$iris3
  Sepal.Length Sepal.Width Petal.Length Petal.Width newSpecies
1          5.1         3.5          1.4         0.2     setosa
2          4.9         3.0          1.4         0.2     setosa

数据:

irisData <- list(iris1=iris, iris2=iris, iris3=iris)

评论

1赞 ninaPeng 11/9/2023
非常感谢您的帮助!
0赞 ninaPeng 11/9/2023
我可以问';x'是什么意思?我找不到任何相关的解释,或者我搜索了错误的关键字
0赞 jay.sf 11/9/2023
@ninaPeng 你可以把它看作是换行运算符,首先更改 x 的名称,然后返回整个 x。这有点速记,您也可以使用两行来代替。;