我有一个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也没有成功。我很困惑。