0

R で data.frames のインデックス作成に問題があります。私は R の初心者です。35512 列と 77 行のdata.frame呼び出しがあります。35512 要素を含むdというリストがあります。すべての列が 100 未満のアイテムに対応するrdようにしたいのですが、私がやっていることは次のとおりです。drd

# just to prove I'm not crazy
> length(colnames(d))
[1] 35512
> length(rownames(d))
[1] 77
> length(rd)
[1] 35512
# find all the elements of rd less than 100 (+ unnecessary faffing?)
> i <- unlist(rd<100)
> names(i) <- NULL
# try to extract all the elements of d corresponding to rd < 100
> d <- d[,i]
Error in `[.data.frame`(d, , i) : undefined columns selected

私は本当にやりたいことはありませんunlistnames(i) <- NULL、私は真剣に妄想的になっています. このエラーメッセージが何を意味するのか、誰でも助けてくれますか?

それが役立つ場合、rd変数は次を使用して作成されます。

rd = lapply(lapply(d, range), diff)

の各列の範囲の違いがわかれば幸いですd

行名と列名の長さを照会する以外に、data.frame の形状を見つけるコマンドを教えてくれる人には、PS ボーナスの素晴らしさです。

編集:次のrdようになります。

> rd[1:3]
$`10338001`
[1] 7198.886

$`10338003`
[1] 4748.963

$`10338004`
[1] 3173.046

そして、私が私のファフをしたとき、i次のようになります:

> i[7:10]
[1] FALSE FALSE FALSE  TRUE
4

2 に答える 2

1

ボーナスQの場合、「 dim」コマンドを使用してデータフレームまたはマトリックスの「形状」を取得します。

A = matrix( ceiling(10*runif(40)), nrow=8)
colnames(A) = c("col1", "col2", "col3", "col4", "col5")
df = data.frame(A)
b = ceiling(100*runif(5))

ndx = b < 50          
result = df[,ndx]     # just the columns of df corresponding to b < 50
于 2010-03-03T21:40:19.560 に答える
1

これを試しましたか:

d[,rd < 100]

自己完結型の例を次に示します。

d <- data.frame(matrix(1:100, ncol=10))
rd <- as.list(1:10)
d[,rd < 5]

データフレームの形状を取得するには、 と を使用nrowncolます。

編集:

私の質問に対するあなたの回答に基づいてNA、あなたのインデックスには、リストの欠損値に起因する非論理値が含まれているようです。最善の方法は、欠損値をどのように処理するかを最初に決定することです。次に、is.na関数を使用してそれらを処理します (ここでは、上記の例を拡張します)。

rd[[3]] <- NA
d[,rd < 5]
# => Error in `[.data.frame`(d, , rd < 5) : undefined columns selected

これに対処するために、その NA 値を 0 に設定します (つまり、それぞれの列が最終的な data.frame に含まれます)。

rd[is.na(rd)] <- 0
d[,rd < 5]

値をどうするかを自分で決める必要がありNAます。

于 2010-03-03T21:34:18.440 に答える