R 在新数据帧中插入NAs和数据

R 在新数据帧中插入NAs和数据,r,dataframe,na,R,Dataframe,Na,我有这样一个df: X1 X2 X3 X4 Number 4 4 4 4 Number.1 2 3 3 2 我想把它转换成这样: > X1 NA 4 2 NA 4 3 NA 4 3 NA 4 2 NA 如何使用示例中的df插入NA? 到目前为止,我尝试了sapply(df,function(x)NA,t(Number(y)),但它检索到一个错误。。。我

我有这样一个
df

           X1  X2  X3  X4
Number      4   4   4   4
Number.1    2   3   3   2
我想把它转换成这样:

> X1
  NA
   4
   2
  NA
   4
   3
  NA
   4
   3
  NA
   4
   2
  NA
如何使用示例中的
df
插入
NA
? 到目前为止,我尝试了
sapply(df,function(x)NA,t(Number(y))
,但它检索到一个错误。。。我知道我必须使用
t()
来转置我的
df
,但是如何在列与行之间添加
NA

有什么建议吗


注意:我对
R
并不陌生,但最近我遇到了一些问题。。。我搜索了StackOverflow的所有地方,但没有找到答案。

这里有一个想法,通过
stack
对数据帧进行加密,并使用
ind
和我们的组指示器添加额外的行,即

s_df <- stack(df)
rbind(data.frame(values = NA, ind = NA), do.call(rbind, by(s_df, s_df$ind, rbind, NA)))[1]
免责声明信用进入

您可以使用
rbind(NA,dat)
取消列出
使用
use.name=FALSE
-感谢@zx8754

data.frame(X1 = c(unlist(rbind(NA, dat), use.name = FALSE), NA))
结果

#   X1
#1  NA
#2   4
#3   2
#4  NA
#5   4
#6   3
#7  NA
#8   4
#9   3
#10 NA
#11  4
#12  2
#13 NA
c(…,NA)
在向量末尾追加
NA

数据

dat <- structure(list(X1 = c(4L, 2L), X2 = c(4L, 3L), X3 = c(4L, 3L), 
    X4 = c(4L, 2L)), .Names = c("X1", "X2", "X3", "X4"), class = "data.frame", row.names = c("Number", 
"Number.1"))

dat选择超出范围的行将创建
NA
行,然后
unlist

data.frame(X1 = c(NA, unlist(dat[1:3, ], use.names = FALSE)))
#    X1
# 1  NA
# 2   4
# 3   2
# 4  NA
# 5   4
# 6   3
# 7  NA
# 8   4
# 9   3
# 10 NA
# 11  4
# 12  2
# 13 NA
或者
unlist(…,use.name=FALSE)
而不是
unname()
data.frame(X1 = c(NA, unlist(dat[1:3, ], use.names = FALSE)))
#    X1
# 1  NA
# 2   4
# 3   2
# 4  NA
# 5   4
# 6   3
# 7  NA
# 8   4
# 9   3
# 10 NA
# 11  4
# 12  2
# 13 NA