1

cbind の使用時に問題が発生しました。cbind を使用する前は、オブジェクトは 2 つの文字ベクトルの data.frame です。

cbind を使用して列を追加した後、data.frame オブジェクトはクラスをマトリックスに変更します。h を空の文字ベクトルとして宣言するなど、as.vector を試しましたが、修正できませんでした。提案と助けをありがとう。

output <- data.frame(h = character(), st = character()) ## empty dataframe
st <- state.abb 
h <- (rep("a", 50))
output <- cbind(output$h, h) ## output changes to matrix class here
output <- cbind(output, st) ## adding a second column
4

2 に答える 2

0

必要ないかもしれませんcbind()

output <- data.frame(state = state.abb, h = rep("a", 50))
head(output)
state h
1    AL a
2    AK a
3    AZ a
4    AR a
5    CA a
6    CO a

@ Ken 実際に何を取得したいのかわかりませんが、変数がリストに保持されていると簡単になる場合があります。以下は例です。

state <- state.abb
h <- rep("a", 50)

lst <- list(state = state, h = h)
mat <- as.matrix(do.call(cbind, lst))
head(mat)
state h  
[1,] "AL"  "a"
[2,] "AK"  "a"
[3,] "AZ"  "a"
[4,] "AR"  "a"
[5,] "CA"  "a"
[6,] "CO"  "a"

df <- as.data.frame(do.call(cbind, lst))
head(df)
state h
1    AL a
2    AK a
3    AZ a
4    AR a
5    CA a
6    CO a
于 2015-05-01T21:37:11.773 に答える
0

情報の補足として、単一の括弧表記を使用して、元のコードに近いもので機能させることができることに注意してください。

データ

output <- data.frame(h = letters[1:5],st = letters[6:10])
h2 <- (rep("a", 5))

これはうまくいきません

cbind(output$h, h2)
#          h2  
# [1,] "1" "a"
# [2,] "2" "a"
# [3,] "3" "a"
# [4,] "4" "a"
# [5,] "5" "a"
class(cbind(output$h, h2)) # matrix

これはマトリックスであり、因子は数値で強制されています

これはうまくいきます

cbind(output["h"], h2)
#   h h2
# 1 a  a
# 2 b  a
# 3 c  a
# 4 d  a
# 5 e  a
class(cbind(output["h"], h2)) # data.frame

output[["h"]]二重括弧 ( ) を使用すると、ドル表記を使用した場合と同じ不適切な結果になることに注意してください。

于 2017-08-09T09:26:18.040 に答える