使用R中的iris数据集,我正在尝试创建一个包含列Petal.Width
中所有数据点的新向量。在创建新向量时,我想为setosa
Species
的每个值添加1,但保留其他Petal.Width
值相同。我正在尝试使用if语句。
if(Species=="setosa"){
Petal.Width+1
} else{
(Petal.Width)
}
警告讯息:
In if (Species == "setosa") { : the condition has length > 1 and only the first element will be used
答案 0 :(得分:1)
使用import { combineReducers } from 'redux';
import CalendarReducer from './CalendarReducer';
export default combineReducers({
calendarData: CalendarReducer
});
代替
render() {
console.log(this.props)
return( blah blah);
}
const mapStateToProps = state => {
return { calendarData: state.calendarData };
};
export default connect(mapStateToProps)(HomeScreen);
答案 1 :(得分:0)
当我们使用数字列添加时,逻辑向量可以被强制转换为二进制,TRUE
表示1,FALSE
为0。因此,我们不需要if/else
或ifelse
条件。
with(iris, (Species == "setosa") + Petal.Width)
答案 2 :(得分:0)
请注意,这确实是一个R问题,而不是Rstudio问题。无论您使用哪种界面,答案都是一样的。
@danielanderson给出了一个很好的答案,这里还有一些供您考虑和希望学习的内容:
iris <- within(iris, petal_1= Petal.Width + ifelse(Species=='setosa', 1, 0))
iris$petal_1 <- iris$Petal.Width + ( iris$Species == 'setosa' )
iris[['petal_1']] <- iris$Petal.Width + c(1,0,0)[ iris$Species ]
如果您想要匹配任何一个组而不是一个值,请查看%in%
。