R向量值在函数中覆盖

R向量值在函数中覆盖,r,vector,integer,numeric,overwrite,R,Vector,Integer,Numeric,Overwrite,我正在解决的具体问题: 创建一个具有iris数据集行数长度的字符向量,这样,每个元素都会得到一个字符值—“大于5”,如果对应的“Sepal.length”>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 {

我正在解决的具体问题:

创建一个具有iris数据集行数长度的字符向量,这样,每个元素都会得到一个字符值—“大于5”,如果对应的“Sepal.length”>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\u vect 5){

char_vect[i]您的第二个版本实际上没有意义。通过如下更改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

char\u vect另请参见
ifelse
函数。
i in char\u vect
i
在第二种情况下不是数字索引,但您仍然像使用数字索引一样使用它。谢谢大家,显然还有更多需要学习的内容-没有考虑char\u vect btwn索引的差异。选项1和2
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