2016-05-10 17 views
0

Noob Rここで質問してください。私は、数百人の異なるユーザーを持つデータセットを持っています。各ユーザーは、一意の数のデータ行を持ち、行列のリストとしてデータを格納したいと考えています。したがって、ユーザー1は500行のマトリックスを持ち、ユーザー2は250のマトリックスを持つことができます。これは、各ユーザのベータを説明するための法線が混在した階層型ロジットの入力として使用されます。私のデータセットの列1はユーザーIDで、残りの列は数値です。Matlab/Pythonユーザからここに質問があります。R

data <- read.csv("hierarchical_dataset.csv", header=FALSE) 
nlgtt = length(table(data[[1]]))       # number of users 
users = names(table(data[[1]]))       # user ids 
これまでのところ良い

すべてが、ここで私はエラーを取得しています場所です:

TV = matrix() 
testdata = list() 

for (i in 1:nlgtt) 
{ TV[i] = matrix(table(data[[1]])[[i]])     # number of rows per user 
    print(TV[i])           # should equal the below line 
    print(dim(data[data[[1]] == users[i], ]))    # should equal the above line 
    testdata[i] = data[data[[1]] == users[i], ]   # store hierarchically by user 
} 

私は上記を実行すると、印刷された値が一致するので、正しいデータが取得されているが、各testdata[i]users[i]値(ユーザーID)と、number of items to replace is not a multiple of replacement lengthというエラーが繰り返されます。私はこれが単なる書式設定の問題であると確信していますが、周りを見回して、私の問題を解決するものを見つけることができませんでした。ヘルプは高く評価しました!

答えて

0

あなたはapply家族機能からbase::lapplyを使用する場合があります。下記の例をご覧ください。

dataset <- data.frame(user_id = c(1,1,2), variable_a = c(1,2,3)) 
lapply(unique(dataset$user_id), function(id) dataset[dataset$user_id == id,]) 

出力は、各要素がユーザによって一意であるUSER_IDとvariable_aのマトリックスと2要素のリストを与えます。

関連する問題