R logo

3行目をcolnamesにする前に "for" を使って名前を順に変更していくことにした。

# 3行目のIDを変更
for(i in 3:6){
Dat1[3,i] <- paste("M_NFT_",c(i-2))
}

for(i in 7:10){
    at1[3,i] <- paste("M_DN_",c(i-6))
}

for(i in 11:14){
    Dat1[3,i] <- paste("F_NFT_",c(i-10))
}

for(i in 15:18){
    Dat1[3,i] <- paste("NFT_",c(i-14))
}

ID変更前↓

r-error-list-numeric-2

ID変更後↓

r-error-list-numeric-3

で、この3行目を "colnames" に指定し、要らなくなった 1-3行目を削除。

# 3行目を "colnames" に指定
colnames(Dat1) <- Dat1[3,]

# 1-3行目を削除
Dat1 <- Dat1[-(1:3),]

無事に "colnames" を目的の形に変更できた。

r-error-list-numeric-4

 

で、str() で それぞれのデータ型を見ると、すべて文字列になっている。

r-error-list-numeric-5

これを "numeric" に変換するために下記コードを入力。

# numeric に変換
for(i in 3:18){
Dat1[,i] <- as.numeric(Dat1[,i])
}

すると、下記エラーメッセージが出現した。

Error in as.numeric(Dat1[, i]) :
'list' object cannot be coerced to type 'double'

 

これはどーしたものかとググると、下記に答えが。

 

どうやら、私がリストタイプをnumericに変換しようとしてるからエラーが起こっているらしい。

で、これを解決するためには、

unlist()
をつけてリストを解除すれば良い様子。
# listを解除してnumericに変換
for(i in 3:18){
    Dat1[,i] <- as.numeric(unlist(Dat1[,i]))
}

無事 "numeric" に変換できた。

r-error-list-numeric-6
にほんブログ村 子育てブログ ワーキングマザー育児へ