R中的If和for循环

R中的If和for循环,r,if-statement,for-loop,R,If Statement,For Loop,我有一个钻石数据集,其中包含可变的“价格”。我想根据variable price中提供的信息创建名为“price_range”的附加变量。我创建了以下循环: diamonds$price_range <- for (diamonds$price in 1:length(diamonds$price)){ if (diamonds$price<= 500) { diamonds$price_range="not expensive" } else if (diamond

我有一个钻石数据集,其中包含可变的“价格”。我想根据variable price中提供的信息创建名为“price_range”的附加变量。我创建了以下循环:

diamonds$price_range <- for (diamonds$price in 1:length(diamonds$price)){
  if (diamonds$price<= 500) {
    diamonds$price_range="not expensive"
  } else if (diamonds$price > 500 & diamonds$price <=1000) {
    diamonds$price_range="affordable price"
  } else{
    diamonds$price_range="expensive"
  }
}

diamonds$price\u range因为R使用元素对元素的操作,所以您也可以使用嵌套的
ifelse
语句来实现这一点,从而省去了创建循环的麻烦

diamonds$price_range <- ifelse(diamonds$price <= 500, "not expensive", 
   ifelse(c(diamonds$price > 500 & diamonds$price <=1000), "affordable price", "expensive"))

table(diamonds$price_range)

diamonds$price\u范围1)使用“=”而不是“==”2)使用索引避免覆盖,不要将for循环分配给变量查看函数
cut
@TonioLiebrand&:use
@UweBlock。考虑到所提供的代码,我将把重点放在工作代码上,以适应编码风格的偏好。如果问题是您喜欢“=”还是“谢谢您的选择!这很有效。但是,我仍然想知道为什么我的代码不起作用。@DashaBazueva您希望尽可能避免在R中使用循环。如果您查看循环的结构,它实际上并不是在数据中循环。请尝试:for(钻石$price in 1:length(钻石$price)){print(diamonds$price)}与:for(i in 1:length(diamonds[,1]){print(diamonds[i,7])相比第二个循环每次通过循环并给出价格时都会更改行索引,您可以将该价格与if语句和上述注释一起使用,以实现您的目的。如果您的问题得到解决,请确保标记并向上投票。欢迎使用SO@DashaBazueva代码不起作用的原因有很多
调用的
中的ndex错误,然后您尝试使用比较函数(
=
)进行赋值,如果
未矢量化,您尝试使用它,就像它是。。。。。。。。。。。。。。。。。