我想重命名大量列(列标题)以使用数字名称而不是组合字母+数字名称。由于数据以原始格式存储的方式,如果我想与特定的数据列交互,我不能只使用data[[152]]
访问正确的列号(因为随机问题完全从数据中过滤掉)要长时间回答评论),但我希望能够通过data$152
访问它们。此外,我的数据中大约一半的列名称已加载class(data$152)
= NULL但class(data[[152]])
=整数(如果我重命名data[[152]]
文件,则它允许我查看{{1}作为整数)。
因此,有没有办法将循环迭代次数用作列名(如下所示)
class(data$152)
这会重新分配我的所有列标题并确保我不会遇到问题类而导致null?
作为附加背景信息,我的数据从逗号分隔的.csv文件导入,其值99分配给NA的答案,第一行是列名称/标题
for (n in 1:415) {
names(data)[n] <-"n" # name nth column after number 'n'
}
有415列标题,格式为Q001,Q002等 大约有200行没有行标签/没有标签列
答案 0 :(得分:3)
您可以在没有循环的情况下执行此操作,如下所示:
names(data) <- 1:415
让我举一个例子说明:
dat <- data.frame(a=1:4, b=2:5, c=3:6, d=4:7)
dat
a b c d
1 1 2 3 4
2 2 3 4 5
3 3 4 5 6
4 4 5 6 7
现在重命名列:
names(dat) <- 1:4
dat
1 2 3 4
1 1 2 3 4
2 2 3 4 5
3 3 4 5 6
4 4 5 6 7
编辑:如何访问新数据
@Ramnath非常准确地指出您无法使用dat$1
访问您的数据:
dat$1
Error: unexpected numeric constant in "dat$1"
相反,您必须在反引号中包装列名:
dat$`1`
[1] 1 2 3 4
或者,您可以使用字符和数字数据的组合来重命名列。这可能是处理问题的一种更方便的方法:
names(dat) <- paste("x", 1:4, sep="")
dat
x1 x2 x3 x4
1 1 2 3 4
2 2 3 4 5
3 3 4 5 6
4 4 5 6 7