Я действительно надеюсь, что кто-то может помочь мне в этом. У меня есть 40 файлов excel с данными. Каждый из этих файлов содержит несколько столбцов данных, и мне нужно взять только 2 из них. При «чтении» этих файлов, чтобы вывести их в R в виде фреймов данных, я должен назвать их «клиентом» и числом (например, клиент1, клиент2 и т. д.) и, возможно, добавить в каждый из них столбец со значениями, взятыми из список, который у меня уже есть в R, называется p и должен называться Pasqua во фреймах данных. я написал этот код

for (e in seq(1:40)){
    assign(paste0("client",e),read_excel(paste("C:/Users/Windows 10/Desktop/DS/",e,".xlsx",sep=""),
col_types = c("skip", "numeric", "skip", "numeric", "skip", "skip", "skip","skip", "skip")))}

Это работает, и у меня есть 40 фреймов данных, как я хотел.

Но если я попытаюсь вставить в цикл код для добавления столбца, я столкнусь с несколькими ошибками: я пытался таким образом

paste0("client",e,"[,Pasqua]")<-p

У меня ошибка target of assignment expands to non-language object, так как кажется, что R не может обрабатывать присваивания с именем переменных, "построенных" таким образом

Тогда еще и таким образом

df[,"Pasqua"]<-p

У меня есть эта ошибка object of type 'closure' is not subsettable

Просматривая здесь сообщения других пользователей, я понимаю, что можно использовать lapply(), но я не нашел способа использовать его правильно. Может кто-нибудь объяснить мне, как справиться с этим? заранее спасибо

0
moltoy0 27 Апр 2020 в 16:39
Спасибо, что открыли мне "мир"....
 – 
moltoy0
29 Апр 2020 в 11:40

1 ответ

Это должно сработать:

# data
client3 <- client2 <- client1 <- data.frame(col1 = 1:3, col2 = 1:3)
p <- 4:6

# assigning new column to each df
for (e in 1:3) {
  eval(parse(text = paste0('client', e, '[,"Pasqua"] <- p')))
}
0
Piotr K 27 Апр 2020 в 23:27