2016-10-04 149 views
1

更换柱我想和B的第一行。例如,以取代A的第一列:ř从数据帧与行从另一数据帧

A <- data.frame(matrix("a", 4, 4), stringsAsFactors = FALSE) 
> A 
    X1 X2 X3 X4 
1 a a a a 
2 a a a a 
3 a a a a 
4 a a a a 

B <- data.frame(matrix("b", 4, 4), stringsAsFactors = FALSE) 
> B 
    X1 X2 X3 X4 
1 b b b b < Take this row 
2 b b b b 
3 b b b b 
4 b b b b 

我想甲成为:

> A 
    X1 X2 X3 X4 
1 b a a a 
2 b a a a 
3 b a a a 
4 b a a a 
^
replace it with this column 

我想:

A[, 1] = B[1, ] 

,但我得到以下警告消息:

In `[<-.data.frame`(`*tmp*`, , 1, value = list(X1 = "b", X2 = "b", : 
    provided 4 variables to replace 1 variables 
+0

@Sotos不,我想替换从A柱有什么建议是用B的列替换A的A列。 – mat

+0

是的,我没有读完它通过:) – Sotos

回答

2

默认情况下,R不降维的时候,只有一个排左(虽然它的时候只有一个列)。

?extract.data.frame

下降:逻辑。如果为TRUE,则结果被强制为可能的最小尺寸。如果只留下一列,则默认为放弃,但如果只剩下一行,则不放弃。

你可以看到,这样做:

A[, 1] 
# [1] "a" "a" "a" "a" 

结果是vector

B[1, ] 
# X1 X2 X3 X4 
#1 b b b b 

的结果仍然是data.frame

您需要unlist结果:

A[, 1] = unlist(B[1, ]) 
A 
# X1 X2 X3 X4 
#1 b a a a 
#2 b a a a 
#3 b a a a 
#4 b a a a 
+1

按预期工作,谢谢! – mat

0

这应该这样做

A[, 1] = t(B[1, ]) 
+0

这几乎工作。但是,我只想更改单元格值,而不影响列或行的名称。理想情况下,它也应该适用于具有不同列名和行名的数据框。 – mat

1

这也应该工作,在不改变行/列名:从B.由行

A[, 1] = t(B)[,1]