Как поместить «я» в al oop до и после $ - PullRequest
0 голосов
/ 27 апреля 2020

Я пытаюсь написать немного для l oop, чтобы помочь мне загрузить некоторые данные и присвоить значения объектам. Но я наткнулся на проблему. Я не могу понять, как правильно поместить «i» в a для l oop до и после этого знака $.

Вот небольшой пример:

Допустим, я хочу чтобы загрузить определенные файлы c .RData, и после того, как я загрузил файлы, я хочу добавить новый столбец, заполненный значением «NULL».

for( i in c(1,2,3,4,5)){
  load(file = paste(DATA, paste(getwd(), "/Group", i ,".RData", sep=""), sep=""))
  assign(paste("Group", i, "$new_c", sep=""), NULL)
}

Этот код просто создает новые объекты, называемые, например, Group1 $ new_ c.

Я также хотел бы знать, как я могу разместить "i", назначая из списка.

Например, вот так:

for( i in c(1,2,3,4,5)){
  assign(paste("Group", i, sep=""), List$`i`)
}

Кто-нибудь знает ответ на мою проблему?

Спасибо.

Ответы [ 3 ]

1 голос
/ 27 апреля 2020

Если вы хотите динамически работать с именами столбцов, не используйте $ - используйте [[. Например,

for(df in list_of_data_frames) df[["new_c"]] <- NULL

Отдельно вы должны знать, что назначение NULL в столбец не приводит к заполнению нового столбца, заполненного NULL s, удаляет столбец . Используйте NA для значения "not-present".

0 голосов
/ 27 апреля 2020

Избегайте for, когда это возможно:

data <- c(1,2,3,4,5)
data <- paste0("Group:",data)

Но если это необходимо, то ответ:

for (i in c(1,2,3,4,5)) {
  assign(paste("Group", i, sep=""),i)
}
0 голосов
/ 27 апреля 2020

Это может помочь. Это не красиво, но делает работу, я думаю.

a <- list(a=2,b=3,c=4)
i = "b"
eval(parse(text=paste0("a$",i)))
[1] 3

Редактировать: орфография

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...