base
パッケージのreplace
機能のヘルプページは、非常にとなります。と表示されません。最悪の部分は、どのように動作するかを理解するのに役立つ例はありません。機能の例を置き換えます
使用方法を教えてください。 1つまたは2つの例が素晴らしいでしょう。
base
パッケージのreplace
機能のヘルプページは、非常にとなります。と表示されません。最悪の部分は、どのように動作するかを理解するのに役立つ例はありません。機能の例を置き換えます
使用方法を教えてください。 1つまたは2つの例が素晴らしいでしょう。
あなたはそれが?"["
で説明されて[<-
機能の単純な官能化されたバージョンであることがわかります(それはコンソールで名前だと入力して)機能を見ればです。 [
は、Rのやや基本的な機能なので、詳細についてはそのページを見ることをお勧めします。インデックス引数は(replace
で2番目の引数が論理的、数値または文字分類値であることを学んでいる。特に重要なリサイクルは2番目と3番目の引数の異なる長さがある場合に発生します。ため
> replace(1:20, 10:15, 1:2)
[1] 1 2 3 4 5 6 7 8 9 1 2 1 2 1 2 16 17 18 19 20
文字インデックスが
> replace(c(a=1, b=2, c=3, d=4), "b", 10)
a b c d
1 10 3 4
論理インデックス:ベクトルという名前
> replace(x <- c(a=1, b=2, c=3, d=4), x>2, 10)
a b c d
1 2 10 10
はここで2つの簡単な例を
> x <- letters[1:4]
> replace(x, 3, 'Z') #replacing 'c' by 'Z'
[1] "a" "b" "Z" "d"
>
> y <- 1:10
> replace(y, c(4,5), c(20,30)) # replacing 4th and 5th elements by 20 and 30
[1] 1 2 3 20 30 6 7 8 9 10
また、論理的なテストを使用することができます
x <- data.frame(a = c(0,1,2,NA), b = c(0,NA,1,2), c = c(NA, 0, 1, 2))
x
x$a <- replace(x$a, is.na(x$a), 0)
x
x$b <- replace(x$b, x$b==2, 333)
上記の例の3番目のパラメータ(値)は次のとおりであることに注意してください。 'Z'またはc(20,30))。
データフレーム自体の値を使用して3番目のパラメータを定義すると、混乱する可能性があります。
など。このような単純なデータフレームと(dplyr :: DATA_FRAMEを使用して):今、あなたが望んでいた場合を考えてみ
a b
(int) (chr)
1 1 X
2 2 Y
3 3 Y
4 4 X
5 5 Z
..etc
:
tmp <- data_frame(a=1:10, b=sample(LETTERS[24:26], 10, replace=T))
これは、このような気にいらを作成します。列 'a'の値に2を掛けることでしたが、列 'b'は 'X'だけです。私の考えは次のようなものになります。
with(tmp, replace(a, b=="X", a*2))
しかし、これは望ましい結果をもたらさないでしょう。 a * 2は 'a'列への参照ではなく、固定されたベクトルとして定義されます。したがって、ベクトル 'a * 2'は、 'replace'操作の開始時に
[1] 2 4 6 8 10 12 14 16 18 20
になります。したがって、 'b'が「X」に等しい最初の行では 'a'の値は2で置き換えられます。2回目は4などに置き換えられます.2回置き換えられませんその特定の行のaの価値。