我正在执行编程任务,并有以下代码段,这些代码段应该为我所使用的数据提供上下文:
d <- read.csv(file='data6a.csv') # read and display data from CSV
d 以下是显示的内容:


d = str(d)
d$colname=as.factor(d$colname)

这个问题出现在这里。分配给了我这行代码来将列x11重命名为y:
names(d)[names(d) == 'old.var.name'] <- 'new.var.name'我已经将代码做了如下修改:
names(d)[names(d) == 'x11'] <- 'y'但是,当我检查以str(d)作为赋值指示更新列名时,将得到以下输出:
1的
列表
$ colname:因子w/ 0级别:
这看起来非常简单,但我不知道为什么会发生这种情况。除了我修改的那一节外,这段代码基本上是给我的。如果有人能给我指明正确的方向,那就太好了。
发布于 2021-11-23 19:51:20
由于@akrun的帮助,这个问题得到了确认。
执行d = str(d)时,d设置为null,因为str()不返回任何内容。
将代码更改为以下代码仍然存在问题:
str(d)
d$colname=as.factor(d$colname)当它返回时:
$<-.data.frame中的错误(_tmp_,colname,value =整型(0)):>替换有0行,数据有394行
因为这个赋值要求我将每个分类变量重新定义为一个因素,所以我们不能跳过该段,只需使用names(d)[names(d) == 'x11'] <- 'y.`更改列名。
对我有效的解决办法如下:
temp = str(d)
temp$colname=as.factor(temp$colname)上面的代码将分类列显示为变量temp中的因素,因此我们可以将行names(d)[names(d) == 'x11'] <- 'y'应用于原来的d。
发布于 2021-11-23 19:43:45
从分配d <-str(d)开始,事情变得很混乱,因为str将返回输出的摘要,但不应该分配给对象,从那一点开始,d不再是一个数据格式了。
只需按以下方式运行代码
d <- read.csv(file='data6a.csv')
names(d)[names(d) == 'x11'] <- 'y'如果您想查看数据,只需运行str(d),但不要将其分配给任何东西
https://stackoverflow.com/questions/70086640
复制相似问题