【发布时间】:2018-12-29 03:52:27
【问题描述】:
当我从 csv 读取数据时,我的第一种方法是使用 na.strings=""。由于某种原因,这不起作用。我也试过了:
df[df==''] <- NA
这给了我一个错误:Can't use matrix or array for column indexing.
我只尝试了该列:
df$col[df$col==''] <- NA
这会将整个数据帧中的每个值都转换为 NA,即使除了空字符串之外还有其他值。
然后我尝试使用mutate_all:
replace.empty <- function(a) {
a[a==""] <- NA
}
#dplyr pipe
df %>% mutate_all(funs(replace.empty))
这也将整个数据帧中的每个值都转换为 NA。
我怀疑我的“空”字符串有些奇怪,因为第一种方法没有效果,但我不知道是什么。
编辑(应 MKR 的要求)
dput(head(df))的输出:
structure(c("function (x, df1, df2, ncp, log = FALSE) ", "{",
" if (missing(ncp)) ", " .Call(C_df, x, df1, df2, log)",
" else .Call(C_dnf, x, df1, df2, ncp, log)", "}"), .Dim = c(6L,
1L), .Dimnames = list(c("1", "2", "3", "4", "5", "6"), ""), class =
"noquote")
【问题讨论】:
-
瑞恩是对的。我很好奇,你为什么要为它创建一个函数?是否只是将其放入 dplyr 管道中?
-
嗯,我的印象是它在函数中设置值并且不需要返回。但即使返回,它也将一切都改变为 NA。是的,我更愿意安装在 dplyr 管道中,但即使在函数之外它也不起作用。编辑:我的 cmets 很慢,但让我用我尝试过的其他一些东西来更新问题。
-
@Ryan 好的,你的 ifelse 以某种方式工作。不知道为什么我尝试了所有其他事情,但我会接受它。谢谢!
-
请发帖
str(df) -
@MKR 查看对我的问题的编辑,以及我对您的回答的评论。