У меня есть несколько наборов данных, которые содержат одинаковые имена переменных, но разные значения, я пытаюсь создать новую переменную с именем group
, которая будет различать каждый набор наборов данных (я делаю это, потому что я помещу все наборы данных в один, и я могу различать по группе). Вот пример для 2 наборов данных.
################################
### Sample data ###
################################
set.seed(8547)
a=sample(1:20,15,replace=FALSE)
a=sort(a)
f=runif(15,0,1)
f=sort(f)
trt1=data.frame(a,f)
set.seed(1452)
a=sample(1:35,22,replace=FALSE)
a=sort(a)
f=runif(22,0,1)
f=sort(f)
trt2=data.frame(a,f)
names_of_dataframes <- ls.str(mode = "list")
# I used a `for` loop because i have approximatively `10` datasets and i do not know if the `apply` family would work for this kind of treatment
for (i in length(names_of_dataframes)) {
if(names_of_dataframes[i]=="trt1"){
trt1$group=rep("trt1",nrow(trt1))
}else if (names_of_dataframes[i]=="trt2"){
trt2$group=rep("trt2",nrow(trt2))
}
}
Я не знаю, что я делаю неправильно, но переменная group
создается только для набора данных trt2
, а не trt1
. Есть мысли, что не так?
Заранее спасибо за вашу помощь
map/mutate
тоже интересно! 06.02.2021pattern
в вашем первом варианте, когда наборы данных имеют совершенно разные имена? 06.02.2021mget(ls())
. Я использовал шаблон, потому что у меня были другие объекты, не связанные с этим постом. 06.02.2021dat.
, напримерdat.trt1
,dat.trt2
,dat.gr3
06.02.2021dat.trt/dat.grp
используйтеls(pattern = "^dat\\.\\w+\\d+$")
06.02.2021