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

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

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

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

Q&A

解決済

1回答

1544閲覧

shiny:uiでの入力文字をserverでの回帰式の変数として使いたい。

Shellykagoshima

総合スコア17

R

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

0グッド

0クリップ

投稿2019/01/03 07:36

shinyのuiサイドのtextInputで入力した文字(数字ではありません)を、回帰式中の変数として使いたいのですが、文字には""がついておりそのままでは認識できません。良い方法がありましたら、教えてください。

作りたい式
lm(y~a+b+c+d+e)

UIサイドで、例えば input1にaをテキスト入力している。

UI side
input1 <- input$input1
input2 <- input$input2
input3 <- input$input3
input4 <- input$input4
input5 <- input$input5
inputALL <- paste(input1, input2, input3,input4,input5, sep="+")
inputALL2 <- paste(input1, input2, input3,input4,input5, sep=",")

Server side
lm(y~input1+input2+input3+input4+input5)

上の場合、実際には
lm(y~"a"+"b"+"c"+"d"+"e")
となり以降の計算がエラーとなります。

良い方法がありますでしょうか?

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

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

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

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

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

KojiDoi

2019/01/03 07:51

いまひとつ意図がよく分からないのですが、lmで利用する式そのものを動的に作り出したいということですか?
Shellykagoshima

2019/01/03 07:57

はい、そうです。本当はデータファイルのラベル名を自動で読み込んで、そのラベル名で回帰式を作りたいです。全項目の~.を使うのではなく文字式を+で繋げて式を作りたいです。
guest

回答1

0

ベストアンサー

eval関数を使ってください。
https://stats.biopapyrus.jp/r/devel/eval.html

投稿2019/01/03 08:23

KojiDoi

総合スコア13671

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

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

Shellykagoshima

2019/01/03 14:16

ありがとうございます。eval関数を使ってみます。ただ、以下ではエラーが出るのですが、どこが悪いのでしょうか。 dataset <- read.csv("test.csv", header=T) variable <- colnames(dataset) out <- variable[length(variable)] input <- variable[1:(length(variable)-1)] input2<- paste(input, collapse = "+") print(input2) eq <- eval(parse(text=lm(out~input2)))
KojiDoi

2019/01/03 14:22

textで指定しているものが文字列でないでしょう。
Shellykagoshima

2019/01/03 15:36

ありがとうこざいます。お陰様でeval関数でやりたいことができました。 ところで、”ggg”と言った文字を、変数として使いたい場合はどのように変換するのでしょうか?eval関数を試してみましたが、これは上手くいかないようです。
KojiDoi

2019/01/03 15:54

どういうコードを書いてうまくいかなかったのか示してくれないと答えようがありません。正しいコードを書いていればちゃんとうまくいきます。
Shellykagoshima

2019/01/04 00:27

以下のように、uiサイドで入力した入力変数名(input$input1など)を、serverサイドのベイズ最適化の変数(input1など)として使いたいですが、文字列として認識しているためエラーが出てしまします。なお、式fについては、先日教えていただいたeval関数で変数化できています。 input1 <- input$input1 input2 <- input$input2 input3 <- input$input3 inputALL <- paste(input1, input2, input3, sep ="+") #全入力変数 ff <- colnames(dataset[ncol(dataset)]) #目的変数 fff <- paste(ff,inputALL, sep="~")  #"目的変数~入力変数1+入力変数2+入力変数3" f <- eval(parse(text=fff)) #文字列を変数化 A.nn <- nnet(f, data=dataset, size=5, learningrate=0.01, decay=0.01, linout=T, skip=T, cross=10) #rBayesianOptimization mytest <- function(input1,input2,input3){ model <- predict(A.nn,data.frame(input1,input2,input3)) list(Score=model[,1],Pred=0) } OPT_Res <- BayesianOptimization(mytest, bounds = list(input1 = c(-30L,30L)*0.1,input2=c(-30L,30L)*0.1,input3=c(-30L,30L)*0.1), init_points = 30, n_iter = 20, acq = "ucb", kappa = 3, eps = 0.0, verbose = TRUE )
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問