是否可以重命名列表元素列表?
例如:
fast <- subset.data.frame(mtcars, mtcars$hp > 250)
medium <- subset.data.frame(mtcars, mtcars$hp >200 & mtcars$hp < 300)
slow <- subset.data.frame(mtcars, mtcars$hp < 80)
mycars <- list(fast, medium, slow)
提供List of 3
mycars
[[1]]
mpg cyl disp hp drat wt qsec vs am gear carb
Ford Pantera L 15.8 8 351 264 4.22 3.17 14.5 0 1 5 4
Maserati Bora 15.0 8 301 335 3.54 3.57 14.6 0 1 5 8
[[2]]
mpg cyl disp hp drat wt qsec vs am gear carb
Duster 360 14.3 8 360 245 3.21 3.570 15.84 0 0 3 4
Cadillac Fleetwood 10.4 8 472 205 2.93 5.250 17.98 0 0 3 4
Lincoln Continental 10.4 8 460 215 3.00 5.424 17.82 0 0 3 4
Chrysler Imperial 14.7 8 440 230 3.23 5.345 17.42 0 0 3 4
Camaro Z28 13.3 8 350 245 3.73 3.840 15.41 0 0 3 4
Ford Pantera L 15.8 8 351 264 4.22 3.170 14.50 0 1 5 4
[[3]]
mpg cyl disp hp drat wt qsec vs am gear carb
Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2
Fiat 128 32.4 4 78.7 66 4.08 2.200 19.47 1 1 4 1
Honda Civic 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2
Toyota Corolla 33.9 4 71.1 65 4.22 1.835 19.90 1 1 4 1
Fiat X1-9 27.3 4 79.0 66 4.08 1.935 18.90 1 1 4 1
但我想将索引[[1]] [[2]] [[3]]
重命名为[[fast]] [[medium]] [[slow]]
,或者首选保留索引,并将列表的各个名称添加为附加描述符。类似于:[[1]]"Fast"
滚动浏览stackoverflow,类似的问题建议使用names
重命名,但names(mycars)
返回NULL。
names(mycars[[1]])
[1] "mpg" "cyl" "disp" "hp" "drat" "wt" "qsec" "vs" "am" "gear" "carb"
但我对更改列名不感兴趣。
这有效:
mycars <- list(fast = fast, medium = medium, slow = slow)
但是,我的实际数据集更复杂,我希望能够在创建列表后重命名元素。
答案 0 :(得分:1)
mycars <- setNames(mycars,c("fast","medium","slow"))
你仍然可以使用索引:
mycars[[1]]
mycars[["fast"]]
names(mycars[[1]])
会返回mycars[[1]]
的列名。
可能违反直觉的一件事是,R
中的列表具有与列数相同长度的可选names
属性,但列项目没有名称附在他们身上(没有单一的name
属性)。
当您致电mycars[[1]]
时,您丢失了姓名。如果您调用mycars[1]
但是只获得一个元素的列表,并且此列表可以具有长度为1的names
属性。
答案 1 :(得分:0)
您可以使用函数名称添加名称,例如:
names(data)[1:2] <- c("january", "february")