d = data.frame(matrix(NA, nrow=6,ncol=3))
names(d) = c("a","b","c")
将矢量插入d
按预期工作
d[1,] = c(1, "Hello", "P")
d[2,] = c(2, "Hello", "Q")
print(d)
a b c
1 1 Hello P
2 2 Hello Q
3 <NA> <NA> <NA>
4 <NA> <NA> <NA>
5 <NA> <NA> <NA>
6 <NA> <NA> <NA>
尝试将data.frame插入d
sub_d = data.frame(
a = 1:2,
b = rep("Hello",2),
c = c("P","Q")
)
d[1:2,] = sub_d
d
a b c
1 1 1 1
2 2 1 2
3 NA NA NA
4 NA NA NA
5 NA NA NA
6 NA NA NA
但由于某些原因,字符会转换为整数,即使我事先指定d$a = as.character(d$a); d$c = as.character(d$c)
也是如此。
我想可以迭代data.frame的每一行来插入构成向量。还有另一种方法可以将data.frame插入另一个吗?
答案 0 :(得分:2)
将stringsAsFactors
添加到您的data.frames,为您提供所需的输出:
d = data.frame(matrix(NA, nrow=6,ncol=3), stringsAsFactors = F)
names(d) = c("a","b","c")
sub_d = data.frame(
a = 1:2,
b = rep("Hello",2),
c = c("P","Q"), stringsAsFactors = F
)
d[1:2,] <- sub_d
d
答案 1 :(得分:2)
可能绊倒你的是@Config(constants = BuildConfig.class, shadows = MediaRouteButtonShadow.class)
默认情况下将字符串转换为因子。下面将插入新的数据框,更像我想,你想要它:
data.frame
您看到的整数是未标记的因子水平。如果(例如)d = data.frame(matrix(NA, nrow=6,ncol=3))
names(d) = c("a","b","c")
sub_d = data.frame(
a = 1:2,
b = rep("Hello",2),
c = c("P","Q"), stringsAsFactors=F
)
d[1:2,] <- sub_d
d
a b c
1 1 Hello P
2 2 Hello Q
3 NA <NA> <NA>
4 NA <NA> <NA>
5 NA <NA> <NA>
6 NA <NA> <NA>
已经被定义为一个因素,带有标签,而d$b
是一个在同一级别上具有相同标签的因素,那么您就没有问题。
答案 2 :(得分:1)
如果您使用sub_d
检查数据框str
的结构,则会看到列a
和b
是因素。
str(sub_d)
#'data.frame': 2 obs. of 3 variables:
#$ a: int 1 2
#$ b: Factor w/ 1 level "Hello": 1 1
#$ c: Factor w/ 2 levels "P","Q": 1 2
您可以使用lapply
sub_d[-1] <- lapply(sub_d[-1], as.character)
然后如果你做
d[1:2,] <- sub_d
你得到了
d
# a b c
#1 1 Hello P
#2 2 Hello Q
#3 <NA> <NA> <NA>
#4 <NA> <NA> <NA>
#5 <NA> <NA> <NA>
#6 <NA> <NA> <NA>