我正在做一個編程任務,并有以下代碼段,它們應該為我正在使用的資料提供背景關系:
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: 0 級的因子:
這看起來非常簡單,但我不確定為什么會發生這種情況。除了我修改的那部分之外,代碼基本上已經給了我。如果有人能指出我正確的方向,那就太好了。
uj5u.com熱心網友回復:
從您分配的那一點開始,事情就變得一團糟, d <-str(d)因為 str 將回傳輸出的摘要,但不應分配給物件,從那時起 d 不再是資料幀。
只需運行如下代碼
d <- read.csv(file='data6a.csv')
names(d)[names(d) == 'x11'] <- 'y'
如果您想查看資料,只需運行str(d)但不要將其分配給任何東西
uj5u.com熱心網友回復:
多虧了@akrun 的幫助,問題才得以確定。
執行時d = str(d),d設定為 null 因為str()不回傳任何內容。
將代碼更改為以下仍然有問題:
str(d)
d$colname=as.factor(d$colname)
當它回傳時:
`$<-.data.frame`(` tmp `, colname, value = integer(0)) 中的錯誤:>replacement 有 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原樣應用該行。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/364180.html
標籤:r
