4

文字列のベクトルを入力する必要があります。各要素は、後のループで使用される変数名です。すべての引用符とコンマを入力するのは面倒です-そのように入力する方法はありますか(これはStataでできることです):

balance.vars <- c(a3 a4 a5_1 a5_2 a5_3 a6_1 a6_2 a6_3 a6_4
a6_5 a6_6 a8 a8_1 a8_2 a8_3 a9 a9_3
a10_1 a10_2 a10_3)
etc.
4

4 に答える 4

4

scanで使用できますtext

balance.vars <- scan(text='a3 a4 a5_1 a5_2 a5_3 a6_1 a6_2 a6_3 a6_4
a6_5 a6_6 a8 a8_1 a8_2 a8_3 a9 a9_3
a10_1 a10_2 a10_3',what='char')

しかし、このように分離された多くの変数を使用することは避けたいと思います。ベクトルまたはリストを使用してはいけないものは何ですか? ワークフローと何をしたいのかをよりよく説明していただければ、より多くの R スタイルのソリューションを提案できるかもしれません。

を使用して、そのようなリストを作成することもできpasteます。たとえば、次のようになります。

paste(paste0('a',rep(3:10,each=3)),rep(0:3,8),sep='_')

OPの明確化後にEDIT、彼はdata.frames変数をフィルタリングしたいようです。

 varnames  <- colnames(d)[grepl('^a[0-9]+(_[1-3])?',colnames(d))]
 formulas <- paste(varnames, "group", sep = " ~ ") 
 res <- lapply(formulas, function(f) t.test(as.formula(f), data = d))
于 2013-07-26T15:20:26.010 に答える
2

R は、関数呼び出しに対してこのスタイルをサポートしていません。しかし、すべての変数名をテキスト ファイル (1 行に 1 つ) に入れると、次のようになります。

a3
a4
a5_1
a6_1
etc. 

その後、次のことができます。

balance.vars <- scan('varnames.txt', what='')

引用符やコンマをすべて入力する必要はありません。

于 2013-07-26T15:17:08.267 に答える
1

どうですか:

balance.vars <- unlist(strsplit("a3 a4 a5_1 a5_2 a5_3 a6_1 a6_2 a6_3 a6_4 a6_5 a6_6 a8 a8_1 a8_2 a8_3 a9 a9_3 a10_1 a10_2 a10_3", " "))

また:

balance.vars <- unlist(strsplit("a3 a4 a5_1 a5_2 a5_3
a6_1 a6_2 a6_3 a6_4 a6_5 a6_6 a8 a8_1 a8_2 a8_3 a9 a9_3
a10_1 a10_2 a10_3", "\\W", perl=TRUE))

読みやすくするために改行を使用する場合。:-)

于 2013-07-26T15:26:25.747 に答える