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

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

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

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

Q&A

1回答

757閲覧

promise under already evaluationとは

peaceLB

総合スコア10

R

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

0グッド

0クリップ

投稿2019/08/02 08:40

データフレーム中の3列目の要素がdefと一致する行の2列目と3列目を書き換える関数を作成しました

R

1change.name <- function(def, cname, scname, data = data){ 2 data[data[,3] == def, 2] <- scname 3 data[data[,3] == def, 3] <- cname 4 return(data) 5}

しかし以下のエラーメッセージが出て動作しません

R

1Error in data[data[, 3] == def, 2] <- scname : 2 promise already under evaluation: recursive default argument reference or earlier problems? 3

どうすれば解決できるでしょうか

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

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

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

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

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

KojiDoi

2019/08/02 13:57

def, dataの内容はどうなっていますか? ちょっとやってみましたがエラーは再現されませんでした。
peaceLB

2019/08/04 03:21

defは文字列、dataはcsvファイルから読み込んだ以下のようなデータフレームです Family Scientific.Name Common.Name Ave..Identity Length:36 Length:36 Length:36 Min. : 99.40 Class :character Class :character Class :character 1st Qu.:100.00 Mode :character Mode :character Mode :character Median :100.00 Mean : 99.96 3rd Qu.:100.00 Max. :100.00 Ave..LOD Water.area Habitat DepthS Length:36 Length:36 Length:36 Min. : 0.000 Class :character Class :character Class :character 1st Qu.: 0.000 Mode :character Mode :character Mode :character Median : 1.000 Mean : 3.867 3rd Qu.: 5.000 Max. :15.000 NA's :21 DepthD X40.Mizuta.TamaRiver.retry.01_S40_L001 Min. : 3.0 Min. : 0 1st Qu.: 9.0 1st Qu.: 0 Median : 20.0 Median : 0 Mean :121.4 Mean : 246 3rd Qu.:124.0 3rd Qu.: 0 Max. :600.0 Max. :1934 NA's :25
KojiDoi

2019/08/04 05:57

dataはどこまでが1行でどこまでがカラムの区切りはどこでしょうか。できればそのCSVファイルの中身を先頭数行でいいですから教えてください。 あと、cname, scnameはどう定義されていますか。
peaceLB

2019/08/06 06:40

summaryではわかりにくかったのでstrで出力したものをのせます。 str(data[1:12]) 'data.frame': 83 obs. of 12 variables: $ Family : chr "074_Anguillidae" "095_Engraulidae" "097_Clupeidae" "097_Clupeidae" ... $ Scientific.Name : chr "Anguilla japonica" "Engraulis japonicus" "Konosirus punctatus" "Sardinella zunasi" ... $ Common.Name : chr "ウナギ" "カタクチイワシ" "コノシロ" "サッパ" ... $ Ave..Identity : num 100 100 100 99.8 100 ... $ Ave..LOD : chr "HIGH" "HIGH" "HIGH" "HIGH" ... $ Water.area : chr "FBS" "S" "BS" "S" ... $ Habitat : chr "demersal" "pelagic-neritic" "pelagic-neritic" "pelagic-neritic" ... $ DepthS : int 1 0 NA 5 NA NA NA NA 5 NA ... $ DepthD : int 400 400 NA NA NA NA NA NA NA NA ... $ X01.Mizuta.TamaRiver.51_S1_L001: num 0 0 5299 36 0 ... $ X02.Mizuta.TamaRiver.52_S2_L001: num 31 0 435 0 0 0 0 0 0 0 ... $ X03.Mizuta.TamaRiver.53_S3_L001: num 263 0 0 0 0 0 30 0 22 0 ... 以上のように2、3行目は文字列、関数に入力するcname, scnameはこちらもいずれも文字列にしています。
guest

回答1

0

質問文から取れる情報をもとにテスト用スクリプトを作ってみました。

R

1# test.r 2 3data <- data.frame( 4 Family = c("074_Anguillidae", "095_Engraulidae", "097_Clupeidae", "097_Clupeidae"), 5 Scientific.Name = c("Anguilla japonica", "Engraulis japonicus", "Konosirus punctatus", "Sardinella zunasi"), 6 Common.Name = c("ウナギ", "カタクチイワシ", "コノシロ", "サッパ"), 7 Ave..Identity = c(100, 100, 100, 99.8), 8 Ave..LOD = c("HIGH", "HIGH", "HIGH", "HIGH"), 9 Water.area = c("FBS", "S", "BS", "S"), 10 Habitat = c("demersal", "pelagic-neritic", "pelagic-neritic", "pelagic-neritic"), 11 DepthS = c(1, 0, NA, 5), 12 DepthD = c(400, 400, NA, NA), 13 X01.Mizuta.TamaRiver.51_S1_L001 = c(0, 0, 5299, 36), 14 X02.Mizuta.TamaRiver.52_S2_L001 = c(31, 0, 435, 0), 15 X03.Mizuta.TamaRiver.53_S3_L001 = c(263, 0, 0, 0), 16 stringsAsFactors = F 17) 18 19change.name <- function(def, cname, scname, data = data){ 20 data[data[,3] == def, 2] <- scname 21 data[data[,3] == def, 3] <- cname 22 return(data) 23} 24 25x<-change.name('ウナギ', 'aaa', 'AAA', data=data) 26

やってみましたが、何の問題もなく成功しているように見えます。

> source('test.r') > x Family Scientific.Name Common.Name Ave..Identity Ave..LOD Water.area Habitat DepthS 1 074_Anguillidae AAA aaa 100.0 HIGH FBS demersal 1 2 095_Engraulidae Engraulis japonicus カタクチイワシ 100.0 HIGH S pelagic-neritic 0 3 097_Clupeidae Konosirus punctatus コノシロ 100.0 HIGH BS pelagic-neritic NA 4 097_Clupeidae Sardinella zunasi サッパ 99.8 HIGH S pelagic-neritic 5 DepthD X01.Mizuta.TamaRiver.51_S1_L001 X02.Mizuta.TamaRiver.52_S2_L001 X03.Mizuta.TamaRiver.53_S3_L001 1 400 0 31 263 2 400 0 0 0 3 NA 5299 435 0 4 NA 36 0 0

質問には書いていない関数の呼び出し方に何らかの問題があった可能性しか思いつきません。

投稿2019/08/07 15:07

編集2019/08/07 15:09
KojiDoi

総合スコア13671

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問