2017-09-04 22 views
0

次のようなよりクリーンなバージョンの提案はありますか?出力は、以下に示すように、2列のdata.frameでなければなりません。ユーザは、「どのくらいの濃度ですか?」という回答を入力します。この番号の行列を作成する必要があります(yとして保存されます)。そして、それぞれの濃塩酸の値は、あなたはすべてのそれらのIFSを必要としないと、私はあなたがreadlineをするのではなく、スキャンを使用することをお勧めしますR:データフレームへの特定のユーザー入力

x <- as.numeric (readline(prompt="How many concs?: ")) 

if(x == 6) { 
    y <- c("conc 1","conc 2","conc 3","conc 4","conc 5", "conc 6") 
    a <- as.integer(strsplit(readline(prompt="enter 6 numbers separated by 
space: "), " ")[[1]]) 
    cbind(y,a) 
} 
if(x == 5) { 
    y <- c("conc 1","conc 2","conc 3","conc 4","conc 5") 
    a <- as.integer(strsplit(readline(prompt="enter 5 numbers separated by 
space: "), " ")[[1]]) 
    cbind(y,a) 
} 
if(x == 4) { 
    y <- c("conc 1","conc 2","conc 3","conc 4") 
    a <- as.integer(strsplit(readline(prompt="enter 4 numbers separated by 
    space: "), " ")[[1]]) 
    cbind(y,a) 
} 
if(x == 3) { 
    y <- c("conc 1","conc 2","conc 3") 
    a <- as.integer(strsplit(readline(prompt="enter 3 numbers separated by 
    space: "), " ")[[1]]) 
    cbind(y,a) 
} 
if(x == 2) { 
    y <- c("conc 1","conc 2") 
    a <- as.integer(strsplit(readline(prompt="enter 2 numbers separated by 
space: "), " ")[[1]]) 
    cbind(y,a) 
} 
if(x == 1) { 
    y <- c("conc 1","conc 2") 
    a <- as.integer(strsplit(readline(prompt="enter 1 number: "), " ") 
[[1]]) 
    cbind(y,a) 
} 
+0

たぶん 'switch'を見てみましょうか? – lmo

答えて

1

(Aとして保存)を入力する必要があります。

x <- as.numeric (readline(prompt="How many concs?: ")) 
y <- paste("conc",1:x) 

print(paste("enter", x," numbers separated return: ")) 
a <- scan(nmax=x,what=double()) 
df = data.frame(conc=y,value=a) 
+0

まあ、そこに行って、私は '?スキャン'はあなたがそれをすることを許していることを知りませんでした。 – thelatemail

関連する問題