我想将A的第一列替换为B的第一行。例如:
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成为:
> 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 :(得分: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 :(得分:1)
这也应该有效,而不会改变行/列名称:
A[, 1] = t(B)[,1]
答案 2 :(得分:0)
这应该这样做
A[, 1] = t(B[1, ])