r - 使用 for 循环重命名数据框中的变量

标签 r loops for-loop split rename

我有以下数据,我已按名称将其拆分为单独的数据框。在我运行以下代码后,每个数据集中的变量都自动命名为"X..i.."

我想重命名每个单独数据框的变量,使其与数据集匹配。

# load data
df1_raw <- data.frame(name = c("A", "B", "C", "A", "C", "B"), 
                      start = c(1, 3, 4, 5, 2, 1),  
                      end = c(6, 5, 7, 8, 6, 7)) 
df1 <- split(x = df1_raw, f = df1_raw$name) # split data by name
df1 <- lapply(df1, function(x) Map(seq.int, x$start, x$end)) # generate sequence intervals
df1 <- map(df1, unlist) # unlist sequences
df1 <- lapply(df1, data.frame) # convert to df

# rename variables
name <- c("A", "B", "C")

for (i in seq_along(df1)) {
  names(df1[i]) <- name[i]
}

最后一个 for 循环对重命名变量不起作用。当我键入 names(df1$A) 时,我仍然得到 "X..i.."。我希望 names(df1$A) 的输出是 "A"

有没有人对如何重命名这些变量有任何想法?谢谢!

最佳答案

从列表中索引时需要使用[[]]

for (i in seq_along(df1)) {
  names(df1[[i]]) <- name[i]
}

或者,您可以更改创建列表的方式,这样您就不必在事后重命名

df1 <- split(x = df1_raw, f = df1_raw$name) # split data by name
df1 <- lapply(df1, function(x) Map(seq.int, x$start, x$end)) # generate sequence intervals
df1 <- map(df1, unlist) # unlist sequences
df1 <- Map(function(x,name) {as.data.frame(setNames(list(x), name))}, df1, names(df1))

关于r - 使用 for 循环重命名数据框中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65400711/

相关文章:

html - 以本地语言显示内容 : R

javascript - 在 while 循环中使用 -- 运算符会产生意想不到的结果

c++ - 在 C++ 中使用 'deque' 的无限循环

Python for 循环时间差异

r - R中xtabs和聚合之间的na.action不一致

r - R 中的日期格式(非标准格式)

r - 如何过滤R中具有特定值的参与者?

loops - PowerShell:多个脚本的写入进度

javascript - 当数组是 JavaScript 中的函数参数时,如何将数组中的整数替换为字符串?

c - 仅反转字符串中的某些单词