1

Rでは、独立変数「group」(2つのグループ)とn個の従属変数で構成されるデータフレーム「mydata」があると仮定します。n個のt検定(従属変数ごとに1つ)を実行し、次のようにして結果を印刷してファイルに保存します。

variables<-names(mydata)
variables<-variables[-1] #to remove the group variable
capture.output(for(i in variables){print(t.test(get(paste("mydata$", i, sep=""))~mydata$group))},file="outputfile.txt")

このコマンドは、次のエラーメッセージを返します。

Error in get(paste("mydata$", i, sep = "")) : object 'mydata$variable1' not found

私は何が間違っているのですか?

4

2 に答える 2

6

簡単な答え:データフレームの要素ではget機能しません。$

より良い答え:を使用して数式全体を作成し、それを1つの要素としてpaste送信します。t.testまた、を使用しますlapply

set.seed(5)
x <- matrix(round(runif(100,0,10),1), ncol=10)
colnames(x) <- paste("var", 1:ncol(x), sep="")
mydata <- data.frame(group=gl(2,10), x)

variables <- names(mydata)[-1]
names(variables) <- variables

out <- lapply(variables, function(v) {
  t.test(as.formula(paste(v, "~ group")), data=d)
})

out
于 2012-05-15T18:26:05.383 に答える
5

その他の場合、いくつかのサンプルデータ:

mydata <- data.frame(group=sample(1:2, 100, replace=T), variable1=rnorm(100), variable2=rnorm(100), variable3=rnorm(100))

私はもっ​​と簡単に使用します:

for(i in variables) {
   t.test(mydata[i], mydata$group)
}

forループを使用していた場合。ただし、よりRに似たスタイルを使用してこれを行うことができます。

lapply(variables, function(v, df=mydata) t.test(df[v], df$group))
于 2012-05-15T18:27:43.443 に答える