df = data.frame(c("classA", NA, "classB"), t(data.frame(rep("A", 5), rep(NA, 5), rep("B", 5))))
rownames(df) <- c(1,2,3)
colnames(df) <- c("class", paste("Year", 1:5, sep = ""))
> df
class Year1 Year2 Year3 Year4 Year5
1 classA A A A A A
2 <NA> <NA> <NA> <NA> <NA> <NA>
3 classB B B B B B
I是故意引入空行(NA行),因为我想在Classa Row和ClassB行之间有一些空间。
我尝试了:
<NA>
df[is.na(df)] <- ""
但是它不起作用。接下来我可以尝试什么?
其他替代方案:
df[df == "NA"] <- ""
如果您想要空白而不是零
如果您想要一个data.frame,然后只需使用
> df <- sapply(df, as.character)
> df[is.na(df)] <- " "
> df
class Year1 Year2 Year3 Year4 Year5
[1,] "classA" "A" "A" "A" "A" "A"
[2,] " " " " " " " " " " " "
[3,] "classB" "B" "B" "B" "B" "B"
as.data.drame
这个答案更多是一个扩展的评论。
您想做的不是我认为良好的做法。例如,r不是Excel,因此仅仅在数据中创建视觉分离的事情就会让您头疼。如果您真的只关心视觉输出,我可以提供两个建议:
> as.data.frame(df)
class Year1 Year2 Year3 Year4 Year5
1 classA A A A A A
2
3 classB B B B B B
na.print
print
实际,即使上述也不是最好的建议。通过将您的
print(df, na.print = "")
# class Year1 Year2 Year3 Year4 Year5
# 1 classA A A A A A
# 2
# 3 classB B B B B B
转换为data.frame
::
list
here是一个split(df, df$class)
# $classA
# class Year1 Year2 Year3 Year4 Year5
# 1 classA A A A A A
#
# $classB
# class Year1 Year2 Year3 Year4 Year5
# 3 classB B B B B B
选项,其中所有列(所有列),其中每个列中的na值(
dplyr
)具有这样的空空间的Na值:mutate
用Reprexv2.0.2