R、 接收器/猫:输出数字以外的内容?

R、 接收器/猫:输出数字以外的内容?,r,cat,sink,R,Cat,Sink,我对R相当陌生,我想在我的代码中有不止一件事情是实践不足的(比如,使用for循环)。我认为在这个例子中,使用apply家族的一些东西可以更好地解决这个问题,但是我不知道如何在我的原始问题中实现它-因此,如果可能的话,请让for循环成为for循环。如果还有什么不好的,我很高兴听到你的意见 但我真正的问题是这个。我有: name <- c("a", "a", "a", "a", "a", "a","a", "a", "a", "b", "b", "b","b", "b", "b","b", "

我对R相当陌生,我想在我的代码中有不止一件事情是实践不足的(比如,使用for循环)。我认为在这个例子中,使用apply家族的一些东西可以更好地解决这个问题,但是我不知道如何在我的原始问题中实现它-因此,如果可能的话,请让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
我得到的部分输出类似于:

 Name:1
 Class:1
 Name:1
 Class:2
 Name:1
 Class:2
另一方面,我想要的输出应该是:

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

cat打印数字的原因是,当您将字符变量放入data.frame时,它们被转换为“factors”。这是data.frames的默认行为。它通常是存储值的更有效的方法,因为它将每个字符串值转换为唯一的整数值。这就是为什么你在计算数值时会看到数字

如果不想在data.frame中使用因子,可以使用

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

您的data.frame命令正在创建因子。如果您不想要它们,那么使用
df,这很简单。谢谢
df <- data.frame(name, class, value, stringsAsFactors=F)
cat(as.character(df$name[i-1]))