R中的If和for循环
我有一个钻石数据集,其中包含可变的“价格”。我想根据variable price中提供的信息创建名为“price_range”的附加变量。我创建了以下循环: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
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错误,然后您尝试使用比较函数(=
)进行赋值,如果未矢量化,您尝试使用它,就像它是。。。。。。。。。。。。。。。。。