erstellen Ich möchte dynamisch Teilmengen meiner data.table basierend auf den Werten in einigen Spalten erstellen.R dynamische Teilmenge von data.table
In meiner data.table habe ich die folgenden Variablen: Besitzer, 2G, 3G, 4G. 2G, 3G, 4G sind binär.
Ich möchte drei Teilmengen erstellen: eine mit 2G == 1, eine mit 3G == 1, eine mit 4G == 1.
Beispiel:
a=c("Paul",1,1,0)
b=c("George",1,0,0)
x=cbind(a,b)
colnames(x)=c("Owner","2G","3G","4G")
Hier ist mein Code:
all_names_df=c()
for(value in 2:4){
techno=paste0(value,"G")
name=paste0("arcep",techno)
all_df=c(all_names_df,name)
df=arcep[techno==1]
assign(name,df)
}
Mein neues data.tables erstellt werden, aber leer. Ich habe mehrere Dinge ausprobiert (mit eval, Zitat, ändere die Syntax etc ...), aber ich kann nicht richtig die Spalte aufrufen.
EDIT:
Ich habe etwas anderes versucht, aber es scheitert auch:
techno=c("2G","3G","4G")
for(value in techno){
index=grep(value,colnames(arcep))
print(index)
set1=subset(arcep,arcep[,index]==1)
print(dim(set1))
assign(set1,paste0("ARCEP_",value))}
Error in `[.data.table`(arcep, , index) :
j (the 2nd argument inside [...]) is a single symbol but column name 'index' is not found. Perhaps you intended DT[,..index] or DT[,index,with=FALSE]. This difference to data.frame is deliberate and explained in FAQ 1.1.
Warum es nicht sagt "'Spaltenname 'index' gefunden wird nicht"? Warum wird nicht der Wert von "index" berücksichtigt? Eval-Index ändert nichts.
Ich habe etwas anderes versucht: – Oolis
Sie arbeiten mit einer 'data.table', also' arcep [, index] 'ist äquivalent zu' arcep [["index"]] ''. Was versuchst du auch mit 'assign' zu tun? –