将data.frame列转换为向量

时间:2014-12-16 15:59:47

标签: r dataframe

创建data.frame的两种不同方法会导致不同的结果:

a <- c(1,2)
b <- c(3,4)
df1 <- as.data.frame(cbind(a, b))
df1
str(df1)
mean(df1$a)

这很好但是:

a <- list(1,2)
b <- list(3,4)
df2 <- as.data.frame(cbind(a, b))
df2
str(df2)
mean(df2$a)

导致警告:

[1] NA
Warning message:
In mean.default(df2$a) : argument is not numeric or logical: returning NA

在将json文件解析为data.frame时遇到此问题,我发现假设data.frame列始终为vector,我犯了一个错误,但它可能是{{ 1}}而不是。当它是list时,不仅listmeansummary等许多其他功能都无法按预期工作。所以现在数据类型as.Date对我来说不再“安全”,将data.frame作为输入传递而不知道它是如何创建的意味着我需要明确地将其列转换为data.frame可能是vectorlist共存时更复杂的问题:

vector

所以我尝试将所有列转换为df3 <- df2 df3$a <- as.numeric(df3$a) str(df3)

vector

但我发现它太冗长了,有没有更好的解决方案?

1 个答案:

答案 0 :(得分:3)

您可以尝试:

data.frame(lapply(df3, unlist))

产地:

'data.frame': 2 obs. of  2 variables:
 $ a: num  1 2
 $ b: num  3 4