2014-11-22 3 views
-5

Я хочу прочитать строку из одного кадра данных и добавить эту строку данных в столбец другого фрейма данных. Размеры совместимы. Как это сделать?Прочитать строку из одного кадра данных и записать его в столбец другого

Определение A & B в кадрах 3X3:

A <- data.frame(c(1:3),c(4:6),c(7:9)) 

А:

c.1.3. c.4.6. c.7.9. 
1  1  4  7 
2  2  5  8 
3  3  6  9 

B <- data.frame(c(13:15),c(16:18),c(19:21)) 

Б:

c.13.15. c.16.18. c.19.21. 
1  13  16  19 
2  14  17  20 
3  15  18  21 

Я хочу, чтобы добавить последнюю строку B к новый столбец в А, чтобы я попал в A:

1  1  4  7 15 
2  2  5  8 18 
3  3  6  9 21 

Это работает. Есть ли более простой способ?

A[, 4] <- unlist(B[3, ]) 
A[,5] <- NULL 
+0

dataframes существует на нескольких языках. Можете быть более конкретными? Вы имеете в виду R, python или что-то еще? – Mike

+0

Извините, я имею в виду R. Я строю dataframe для хранения результатов из других фреймов данных. У меня есть кадр данных NXM, который содержит мои результаты. Я выбираю строку из фрейма данных QXN, и я хочу загрузить эту строку в свой кадр данных результатов NXM в виде столбца. Я пробовал различные схемы, но всегда получаю ошибки при попытке загрузить вектор строки в виде столбца в кадр данных результата. – Ernie

+0

Мне не нужно назначить нуль. Только получить 4 столбца матрицы в A. Также см., Что 'A [, 4] <- t (B [3,])' успешно. –

ответ

3

Почему нет:

i <- sample(nrow(NXM) , 1) # pick a row, .... any row 
NXM[ , i] <- unlist(QXN[i, ] (

Или:

A[,4] <- t(B[3,]) 

Существует потенциальный недостаток, что «наименьший общий тип знаменатель» для различных типов столбцов QXN будет столбец введите NXM. Ситуация с файловой рамкой немного отличалась от ситуации с матрицей.

+0

Да, это не работает. Я определил 3x3 фрейм данных и 3x3 кадра данных B. Затем я напечатал: A [4] <- В [3,] Я получил эту ошибку: предупреждающее сообщение: В '[<- .data.frame' ('* tmp *',, 4, value = list (c.13.15. = 15L, c.16.18. = 18L,: предоставил 3 переменные для замены 1 переменных Я даже пробовал: A [, ncol (A) +1] <- B [nrow (B),] и получил это сообщение об ошибке: В '[<-. Data.frame' (' * tmp * ',, ncol (A) + 1, value = list (c.13.15. = 15L,: – Ernie

+0

Вы никогда не предлагали тестовый пример. Возможно, вам придется обернуть 'unlist' вокруг RHS: NXM [, i] <- unlist (QXN [i,]) –

+0

Исходное сообщение отредактировано. – Ernie