具体问题我正在解决:
创建一个长度为虹膜数量行数据集的字符向量,这样每个元素得到一个字符值 - 如果对应的'Sepal.Length'> gt,则为“大于5”。 5,否则它应该“小于5”。
这有效:
char_vect <- c(seq(1:nrow(iris)))
for (i in char_vect) {
if (iris$Sepal.Length[i] > 5) {
char_vect[i] <- ("greater than 5") } else {
char_vect[i] <- ("less than 5")
}
}
但出于某种原因,如果我将char_vect定义如下,我会得到有趣的回应:
char_vect <- iris$Sepal.Length
for (i in char_vect) {
if (iris$Sepal.Length[i] > 5) {
char_vect[i] <- ("greater than 5") } else {
char_vect[i] <- ("less than 5")
}
}
虽然从这两种情况开始的矢量I&#39; m是不同的,但是函数是相同的并且覆盖了原始矢量,所以只要它们的长度相等,它们的值就不相关了吗?
当我看第二个选项的输出是什么时,我更加困惑,因为它看起来有些功能覆盖了一些原始值但不是全部...
我的预感是,这与选项1将char_vect定义为整数而选项2是数字这一事实有关吗?但我不明白为什么比较运算符对整数和数字不起作用。查看选项2的输出,似乎还有一个整数,该函数不起作用。
非常感谢R新手!答案 0 :(得分:-1)
你的第二个版本实际上没有意义。您可以通过更改for循环的主体来看到这一点:
char_vect <- iris$Sepal.Length
for (i in char_vect) {
cat(i, "\n")
}
5.1
4.9
4.7
4.6
5
5.4
... Output truncated
这些是您在iris$Sepal.Length[i]
和char_vect[i]
中投放的i的值。