R,水槽/猫:输出的东西比其他的数字?(R, sink/cat: Output something

2019-10-20 09:48发布

我是相当新的R和我想有不止一件事不足的做法在我的代码(例如,使用for循环)。 我认为,在这个例子中,它可以从申请家庭的东西来解决比较好,但我不知道怎么做,在我原来的问题 - 所以,如果可能的话,请让for循环是一个for循环。 如果别的东西是不好的,我很高兴听到你的意见。

但我真正的问题是这样的。 我有:

name <- c("a", "a", "a", "a", "a", "a","a", "a", "a", "b", "b", "b","b", "b", "b","b", "b", "b") 
class <- c("c1", "c1", "c1", "c2", "c2", "c2", "c3", "c3", "c3","c1", "c1", "c1", "c2", "c2", "c2", "c3", "c3", "c3")
value <- c(100, 33, 80, 90, 80, 100, 100, 90, 80, 90, 80, 100, 100, 90, 80, 99, 80, 100)
df <- data.frame(name, class, value)
df

我想打印出来。 我用水槽以及hwriter(以将其输出作为一个HTML)以后。 我得到两个问题,所以我希望它是由同一引起的,这是不够的,如果我们解决了它下沉。 这是代码:

sink("stuff.txt")

for (i in 1:nrow(df)) {
    cat(" Name:")
    cat(df$name[i-1])
    cat("\n")
    cat(" Class:")
    cat(df$class[i-1])
    cat("\n")
}

sink()
file.show("stuff.txt")

输出我得到的部分原因是这样的:

 Name:1
 Class:1
 Name:1
 Class:2
 Name:1
 Class:2

在另一方面,我想输出应该是这样的:

 Name:a
 Class:c1
 Name:a
 Class:c2
 Name:a
 Class:c2

Answer 1:

原因cat被印数是你的字符变量转换为当你把它们放在data.frame“因素”。 这是data.frames的默认行为。 它往往是存储值,因为它把每个字符串值的唯一整数值​​更有效的方式。 这就是为什么你看到的数字,当你的猫的价值。

如果你不想在你的data.frame使用的因素,你可以使用

df <- data.frame(name, class, value, stringsAsFactors=F)

这将保留值的字符。 另外,您也可以转换为字符打印时

cat(as.character(df$name[i-1]))


文章来源: R, sink/cat: Output something else than numbers?
标签: r cat sink