私は巨大なデータフレームを持っています(それを呼びますhuge
)私は行番号で2つに分割したいと思います。ただし、私が行う方法では、結果のサブセットがデータフレームではなく大きな要素になることに気付きました。
list1 <- huge[c(1:8175),]
list2 <- huge[c(8176:nrow(huge),]
class(list1)
[1] "factor"
誰かが私にそれがそのような理由を説明できますか、そしてどうすればそれを防ぐことができますか?
1列のデータフレームをサブセット化する可能性があります。次の例を考えてみましょう。
# Create an example data frame
dt <- data.frame(a = 1:5, b = letters[1:5])
dt
# a b
# 1 1 a
# 2 2 b
# 3 3 c
# 4 4 d
# 5 5 e
str(dt)
# 'data.frame': 5 obs. of 2 variables:
# $ a: int 1 2 3 4 5
# $ b: Factor w/ 5 levels "a","b","c","d",..: 1 2 3 4 5
# Subset the data frame
list1 <- dt[1:2, ]
list2 <- dt[3:nrow(dt), ]
class(list1)
# [1] "data.frame"
サブセット化dt
するコードはうまく機能します。ただし、そこから1列のデータフレームを作成しdt
てサブセット化すると、出力が自動的にベクトルになることがわかります。
# Create a one-column data frame
dt2 <- dt[, 2, drop = FALSE]
# Subset the data frame
list3 <- dt2[1:2, ]
list4 <- dt2[3:nrow(dt2), ]
class(list3)
# [1] "factor"
list3
# [1] a b
# Levels: a b c d e
解決策はdrop = FALSE
、出力をデータフレームとして保持するために、データフレームをサブセット化するときに追加することです。
# Subset the data frame
list5 <- dt2[1:2, , drop = FALSE]
class(list5)
# [1] "data.frame"
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加