将行添加到data.frame但仅添加到某些列

时间:2015-04-06 12:03:24

标签: r dataframe

我希望创建一个data.frame并添加行,但仅限于某些列。我希望将剩余的列指定为NA。

我所拥有的内容如下:

#create empty data frame
x=data.frame(matrix(nrow=0,ncol=3))
> x
[1] X1 X2 X3
<0 rows> (or 0-length row.names)

#The data and its corresponding columns
> y=data.frame(col=c("X1","X3"),val=c(20,30))
> y
  col val
1  X1  20
2  X3  30
#select those columns (works fine)
> x[,y$col]
[1] X1 X2
<0 rows> (or 0-length row.names)
#select and create a row for those columns and corresponding values
> x[,y$col]=y$val
Error in Summary.factor(1:2, na.rm = FALSE) : 
  min not meaningful for factors

所以问题是你将如何(有效地)创建新行。我猜想应该有办法在没有自己指定NA的情况下做到这一点。

1 个答案:

答案 0 :(得分:2)

其中一个问题是col中的y变量是一个因素。这很容易被撤消:

y=data.frame(col = c("X1","X3"), val = c(20,30), stringsAsFactors=FALSE)

接下来,当你做

x[,y$col]=y$val

您没有指定行号。这样做会有效:

x[1,y$col] <- y$val

x

#   X1 X2 X3
# 1 20 NA 30

但是如果你有其他X1和X2写入x数据帧,那么你很快就会遇到问题。所以你的算法可能需要一些刷新,除非这真的是你需要的。