私のコードの一部に問題があります。私は初心者ですし、別のdata.frameを作成するためにリストを使ってforループを作成しようとしました。みましょうforループのリストの使用
df<-data
head(data)
col1 col2 col3
A 1 13
A 2 34
A 2 46
B 1 23
D 3 56
B 2 31
df_a<-data[which(data$col1=="A")
df_b<-data[which(data$col1=="B")
df_c<-data[which(data$col1=="C")
df_d<-data[which(data$col1=="D")
list<-c("_a","_b","_c","_d")
for (i in list){
paste0("df",i,"1")<-data(which(paste0("df",i)$col2==1))
paste0("df",i,"2")<-data(which(paste0("df",i)$col2==2))
paste0("df",i,"3")<-data(which(paste0("df",i)$col2==3))
この場合、私の元のデータフレームとは異なるデータフレームを構築することです。この文脈ではちょっと厄介なように見えるかもしれませんが、たとえ構文が似ていても、私はこの方法をまったく使っていません。
問題は、データフレームのペースト名と "$"の補助によるものです。 Rはエラーメッセージを返す:
Error in which(paste0("df", i, "1")$col2 == 1) : erreur d'évaluation de l'argument 'x' lors de la sélection d'une méthode pour la fonction 'which' : Error in paste0("df", i, "1")$col2 : $ operator is invalid for atomic vectors
をあなたはこの問題を解決するためのアイデアを持っていますか?
、それがあるべき'df_a <-data [which(data $ col1 ==" A ")、]'のようなもので、b、c、dについても同様です。 – jdb
'Filter(nrow、split(df、list(df $ col1、df $ col2)))')は十分でなければなりません – Sotos