如何从数据帧列表R中修剪所有空间

时间:2018-03-14 21:29:51

标签: r lapply

我在R脚本中摄取的数据充满了空白(我存在的祸根)。到目前为止,我一直在我的函数中使用trimws,以便我的连接返回真正的结果。我想知道是否可以修剪我存储在列表中的所有列和所有数据帧中的空白区域。

ParsedFile <- grep("ItemDetail", names(.GlobalEnv), value = TRUE)

这会创建一个数据框列表,我想要删除所有字段中的空白区域。我认为这样可行,但lapply似乎不想将信息写回数据框。

as.data.frame(lapply(get(ParsedFile), trimws))

此外,我看到它只向控制台打印1个结果,我期望每个数据帧的结果。

有人可以帮帮我吗?

由于

2 个答案:

答案 0 :(得分:1)

使用purrr及其map函数迭代数据框列表,然后map_df迭代每个数据框中的列,这将返回结果{{ 1}}。

data_frames

答案 1 :(得分:0)

IIUC,这是一种方法。我不知道你想要的输出是什么。但是,此方法返回数据帧列表。这可能会给你一些想法:

# here df1, df2 are data frames
df1 = data.frame(name = c(' mani ','san ',' fdfg '))
df2 = data.frame(name = c(' mani ','gh ',' fdfg '))

# do this
lapply(c(df1, df2), function(x) do.call(rbind, lapply(x, trimws)))

$name
     [,1]  
[1,] "mani"
[2,] "san" 
[3,] "fdfg"

$name
     [,1]  
[1,] "mani"
[2,] "gh"  
[3,] "fdfg"

第二种方法:对于您的情况: -

# save intermediate list
temp <- lapply(get(ParsedFile), function(x) do.call(rbind, lapply(x, trimws)))

# convert list to df
new_df <- data.frame(new_col = do.call(rbind, temp))

print(new_df)

    new_col
1    mani
2     san
3    fdfg
4    mani
5      gh
6    fdfg