所以你希望你的列表有名字:
NAME <- paste0("Degrees", 1:length(Degrees_df1))
以下任何一项都可以:
names(Degrees_df1) <- NAME
attr(Degrees_df1, "names") <- NAME
Degrees_df1 <- "names<-"(Degrees_df1, NAME)
Degrees_df1 <- setNames(Degrees_df1, NAME)
Degrees_df1 <- structure(Degrees_df1, names = NAME)
但我认为,最好的办法是在创建列表时给出名称。例如,如果你这样做:
list(1, 2, 3, 4)
结果列表没有名称。如果你这样做了
list(a = 1, b= 2, c = 3, d = 4)
结果列表有名字。
如果我在那里应用粘贴功能,我会收到如下错误:
分配错误(names(paste0("Degrees_df", i)), paste0("Degrees", 1:length(get(paste0("Degrees_df", : 无效的第一个参数)"
抱歉,我想使用粘贴函数修改你的 for 循环内的代码。
你可能需要这个(效率不高):
df_i <- get(paste0("Degrees_df", i)) ## a local variable
names(df_i) <- paste0("Degrees", 1:length(df_i)) ## modify local variable
assign(paste0("Degrees_df", i), df_i) ## write back and update
或(更好):
df_i <- get(paste0("Degrees_df", i)) ## a local variable
assign(paste0("Degrees_df", i),
setNames(df_i, paste0("Degrees", 1:length(df_i))))
# assign(paste0("Degrees_df", i),
# "names<-"(df_i, paste0("Degrees", 1:length(df_i))))
# assign(paste0("Degrees_df", i),
# structure(df_i, names = paste0("Degrees", 1:length(df_i))))
assign 用于为变量赋值(或另一个变量)。看起来您的错误代码试图分配名称属性。注意,列表/data.frame 的名称是“属性”,而不是变量,所以不能使用assign 更改它们。