質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
R

R言語は、「S言語」をオープンソースとして実装なおした、統計解析向けのプログラミング言語です。 計算がとても速くグラフィックも充実しているため、数値計算に向いています。 文法的には、統計解析部分はS言語を参考にしており、データ処理部分はSchemeの影響を受けています。 世界中の専門家が開発に関わり、日々新しい手法やアルゴリズムが追加されています。

Q&A

解決済

1回答

9498閲覧

Rでデータフレーム内のInfを除く方法

thinkn1108

総合スコア45

R

R言語は、「S言語」をオープンソースとして実装なおした、統計解析向けのプログラミング言語です。 計算がとても速くグラフィックも充実しているため、数値計算に向いています。 文法的には、統計解析部分はS言語を参考にしており、データ処理部分はSchemeの影響を受けています。 世界中の専門家が開発に関わり、日々新しい手法やアルゴリズムが追加されています。

0グッド

0クリップ

投稿2016/02/03 04:11

編集2016/02/03 04:23
a <- c(0,2,3) b <- c(4,5,6) c <- c(7,8,9) d <- rbind(a,b,c) df <- as.data.frame(d) df.log <- log(df)

とすると
0のところが-Infになりますが、ここに0を代入したいと考えています。

ただ、

df.log[is.infinite(df.log)] <- 0

とするとis.infinite(df.log)について怒られます。
うまい回避方法はないでしょうか。

<追記>
ださい方法ならば

del_inf <- function(df, assign_value) { for (i in 1:length(rownames(df))) { for (j in 1:length(colnames(df))){ if (is.infinite(df[i,j])) { df[i,j] <- assign_value } } } return(df) }

でいけます。かっこいい書き方でいけるならばお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

which()を使ったら1行でできました.コードは次の通りです.

R

1df.log[which(df.log == -Inf, TRUE)] <- 0

which()で-Infになっている箇所を見つけて,その位置を0にしています.もちろん,-Infが複数あってもこれでいけます.

投稿2016/02/05 01:59

t-kaneko

総合スコア61

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

thinkn1108

2016/02/09 03:55

ありがとうございます!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問