Как добавить столбец данных в существующие фреймы данных с помощью цикла - PullRequest
0 голосов
/ 10 июля 2019

Мне нужно добавить столбец данных в несколько фреймов данных, который представляет хромосому, из которой были получены данные. Я читал много постов о добавлении столбца во фрейм данных, и все они либо слишком специфичны для ответов, либо переключаются на использование функций применения, которые довольно непрозрачны в том, как они работают. Может ли кто-нибудь помочь мне здесь и показать мне подходящие методы цикла и применения, чтобы я мог начать распаковывать стиль apply + function (x)?

Я пытался использовать paste0 для создания вектора объектов для вставки в цикл, но это не удалось. Вот основной синтаксис того, как я думаю, что цикл должен работать (но не работает):

library(dplyr)

df.1 <- data.frame(V1=rnorm(100), V2=rnorm(100))
df.2 <- data.frame(V1=rnorm(100), V2=rnorm(100))
df.3 <- data.frame(V1=rnorm(100), V2=rnorm(100))

for(i in 1:3){
  df.i <- df.i %>% mutate(CHR = i)
}

Это ошибка, которую я получаю с этим кодом: Ошибка в eval (lhs, parent, parent): объект 'df.i' не найден.

Вывод должен выглядеть следующим образом:

head(df.1)
          V1         v2 CHR
1 -1.3545128  0.8267013   1
2  0.3758215 -0.4475770   1
3  0.5209901 -1.1342161   1
4  0.7207743 -1.4273951   1
5 -0.3867220  0.2681198   1
6  1.3279556  0.6116999   1

Спасибо за помощь.

Ответы [ 2 ]

0 голосов
/ 10 июля 2019

Вы можете попробовать поместить данные в список и выполнить цикл следующим образом.

df.1 <- data.frame(V1=rnorm(100), V2=rnorm(100))
df.2 <- data.frame(V1=rnorm(100), V2=rnorm(100))
df.3 <- data.frame(V1=rnorm(100), V2=rnorm(100))
df_list <- list(df.1,df.2, df.3)
for(i in 1:length(df_list)){
  df_list[[i]] <- df_list[[i]] %>% mutate(CHR = i)
}
0 голосов
/ 10 июля 2019

Вы можете добавить имена столбцов:

column_names= ["Id", "Name", "Age", "Weight", 'mreading1', 'mreading2', 'mreading3', 'freading1', 'freading2', 'freading3']
df = pd.read_csv("defo.csv", names = column_names)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...