我想将大量列(列标题)重命名为数字名称,而不是组合的letter+number名称。由于数据以raw格式存储的方式,如果我想要与特定的数据列交互(因为随机问题由于长答案注释而被完全从数据中过滤掉),我不能仅仅通过data[[152]]访问正确的列号,但是我希望能够通过data$152访问它们。此外,我的数据中大约一半的列名已经加载了class(data$152) = NULL但class(data[[152]]) = integer (如果我重命名data[[152]]文件,它会适当地允许我将class(data$152)看作整数)。
因此,有没有一种方法可以使用循环迭代号作为列名(如下所示)
for (n in 1:415) {
names(data)[n] <-"n" # name nth column after number 'n'
}这将重新分配我的所有列标题,并确保我不会遇到导致null的问题类?
作为额外的背景信息,我的数据是从逗号分隔的.csv文件导入的,值99分配给NA的答案,第一行是列名/标题
data <- read.table("rawdata.csv", header=TRUE, sep=",", na.strings = "99")标题格式为Q001、Q002等的列有415列。大约有200行没有行标签/没有标签列
发布于 2011-07-11 23:24:21
您可以在不使用循环的情况下执行此操作,如下所示:
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编辑:如何访问新的data
@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 7https://stackoverflow.com/questions/6652387
复制相似问题