计算列表示在将一个数据帧分配给另一个数据帧R的字段之后

时间:2017-04-10 16:35:47

标签: r

我有一个数据框,例如:

    > df=data.frame(a=1:4,b=2:5)
    > df
    a b
    1 1 2
    2 2 3
    3 3 4
    4 4 5

然后我创建另一个数据帧并将上面的数据帧分配给另一个数据框:

    > df2=data.frame(c=3:6)
    > df2$df1=df
    > df2
      c df1.a df1.b
    1 3     1     2
    2 4     2     3
    3 5     3     4
    4 6     4     5

当我计算数据框的列平均值时,我得到了错误:

> colMeans(df2)
Error in if (inherits(X[[j]], "data.frame") && ncol(xj) > 1L) X[[j]] <- as.matrix(X[[j]]) : 
missing value where TRUE/FALSE needed

有人可以帮忙解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

检查ncol(df2),看看只有2&#34;列&#34;。 colMeans函数不能取df2列表的第二个元素的平均值,因为它不是一列而是两列。您可以df2$df1 = df代替df2 <- cbind(df2, df)。如果您希望列名与示例中的列名相同,则可以执行

sapply(1:ncol(df), function(i) df2[,paste0('df1','.',names(df)[i])] <<- df[,i])