首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用循环变量

使用循环变量
EN

Stack Overflow用户
提问于 2011-07-11 23:16:21
回答 1查看 1.2K关注 0票数 3

我想将大量列(列标题)重命名为数字名称,而不是组合的letter+number名称。由于数据以raw格式存储的方式,如果我想要与特定的数据列交互(因为随机问题由于长答案注释而被完全从数据中过滤掉),我不能仅仅通过data[[152]]访问正确的列号,但是我希望能够通过data$152访问它们。此外,我的数据中大约一半的列名已经加载了class(data$152) = NULL但class(data[[152]]) = integer (如果我重命名data[[152]]文件,它会适当地允许我将class(data$152)看作整数)。

因此,有没有一种方法可以使用循环迭代号作为列名(如下所示)

代码语言:javascript
复制
    for (n in 1:415) {
        names(data)[n] <-"n"    # name nth column after number 'n'
    }

这将重新分配我的所有列标题,并确保我不会遇到导致null的问题类?

作为额外的背景信息,我的数据是从逗号分隔的.csv文件导入的,值99分配给NA的答案,第一行是列名/标题

代码语言:javascript
复制
    data <- read.table("rawdata.csv", header=TRUE, sep=",", na.strings = "99")

标题格式为Q001、Q002等的列有415列。大约有200行没有行标签/没有标签列

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-07-11 23:24:21

您可以在不使用循环的情况下执行此操作,如下所示:

代码语言:javascript
复制
names(data) <- 1:415

让我举一个例子来说明:

代码语言:javascript
复制
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

现在重命名这些列:

代码语言:javascript
复制
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访问数据

代码语言:javascript
复制
dat$1
Error: unexpected numeric constant in "dat$1"

取而代之的是,您必须将列名放在反号中:

代码语言:javascript
复制
dat$`1`
[1] 1 2 3 4

或者,您可以使用字符和数字数据的组合来重命名列。这可能是处理您的问题的一种更方便的方法:

代码语言:javascript
复制
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
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6652387

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档