我有一个数据框,例如:
> 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
有人可以帮忙解决这个问题吗?
答案 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])