当只有1行时,数据帧转置

时间:2016-04-08 06:45:03

标签: r dataframe apply stringr

我有一个data.frame,它是由许多其他操作生成的,是继续进一步操作所必需的。下面是一个小例子。

messy = data.frame(code = c("23740", "26501", "29458"), 
reducer = c("15ml", "80mm flanged", "80mm"), type = c("1_dash_2_dash_3",
"adaptor", "adaptor"), stringsAsFactors = F)
messy$volume = character(nrow(messy))
messy$length = character(nrow(messy))

一般来说,它有很多行但有时可能只有一行。我将以下代码行应用于其中,以便为进一步的操作做好准备。

library(stringr)
messy = data.frame(apply(messy, 2, function(x) paste(" ", str_trim(x), " ",
sep = "")), stringsAsFactors = F)

到目前为止,多行都可以。然而,当我向它传递一行数据帧时,数据帧被转置,因此变得不可用。

messy = messy[2,] 
str(messy) # 'data.frame':  1 obs. of  5 variables:
messy = data.frame(apply(messy, 2, function(x) paste(" ", str_trim(x), " ",
sep = "")), stringsAsFactors = F)
str(messy) # 'data.frame':  5 obs. of  1 variable:

如何防止此行为?我在data.frame文档中看不到任何内容。我尝试在I()中包装凌乱,但这也没有帮助。我在行(1)而不是列(2)上运行了apply也没有成功。我很困惑。

0 个答案:

没有答案