0
申し訳ありませんが、完全に見ても何も見つかりませんでした。 私の問題は次のとおりです。調査データがあり、異なる変数で同じ3つのステップを実行する必要があります。私は常にジェンダーによって出力を区切りたい。だから私はこれを自動化し、3つの新しい変数を返す関数を作りたいと思っています。入力としてdata.frameから変数をとり、新しい変数を作成する関数を定義します。R
myfunction <- function(x) {
x.mean.by.gender <- svyby(~x, ~gender, svymean, design = s.design)
x.boxplot <- svyboxplot(x~gender, varwith=FALSE, design = s.design)
x.ttest <- svyttest(x~gender, design = s.design)}
myfunction(data$income)
これは私が(箱ひげ図は、性別によって分割されていないが、重要なされません)何をしたいかの実施例である:
require("survey")
income <- runif(50, 1000, 2500)
wealth <- runif(50, 10000, 100000)
weight <- runif(50, 1.0, 1.99)
id <- seq(from = 1, to = 50, 1)
gender <- sample(0:1, 50, replace = TRUE)
data <- data.frame(income, wealth, weight, id, gender)
data.w <- svydesign(ids = ~id, data = data, weights = ~weight)
data.w <- update(data.w, count=1)
svytotal(~count, data.w)
# Income difference
income.mean.table <- svyby(~income, ~gender, svymean, design = data.w)
income.mean.table
income.boxplot <- svyboxplot(income~gender, varwith = FALSE, design = data.w)
income.ttest <- svyttest(income~gender, design = data.w)
income.ttest
# Wealth difference
wealth.mean.table <- svyby(~wealth, ~gender, svymean, design = data.w)
wealth.mean.table
wealth.boxplot <- svyboxplot(wealth~gender, varwith = FALSE, design = data.w)
wealth.ttest <- svyttest(wealth~gender, design = data.w)
wealth.ttest
ので、関数が実行しなければならないことは、次のようになりますsvyby
,svyboxplot
およびsvyttest
の反復のうちの1つを実行し、変数の名前をinput.function(例:income.ttest
)として使用して変数を作成します。私はこれが物事をクリアすることを願っています。混乱させて申し訳ありません。データオブジェクトは異なるタイプである場合
は、私は次のエラーを取得するリターンリストの名前の要素を使用することができますバージョン: 引数は同じ長さでなければなりません さらに、警告メッセージ: 1:In x(1:NROW(x))、list(factor(strata))、function(index){(#2から)} *重み: 長いオブジェクトの長さは短いオブジェクトの長さの倍数ではありません 2:In x * pweights: 長いオブジェクトの長さは短いオブジェクトの倍数ではありません –
@DanielWinkler例を更新しました。さらに簡単にして、Win10、x64、Microsoft ** R ** 3.2.3 –
@DanielWinkler型/長さオブジェクトごとに異なる3つのリスト、数値ベクトル、整数ベクトル、文字列を返します。名前を付けられたアクセスを作成しました。データフレームのように動作します。 –