R 有条件地创建新列
我相当肯定这是一个非常明显的问题,但我想不出来 假设我有以下数据集:R 有条件地创建新列,r,if-statement,dataframe,R,If Statement,Dataframe,我相当肯定这是一个非常明显的问题,但我想不出来 假设我有以下数据集: test <- data.frame(A = c(1:10), B = c(1:10), C = c(1:10), P = c(1:10)) test您必须从函数返回一个值,然后将该值分配给对象。与许多其他语言不同,R不会就地修改对象,至少在没有大量工作的情况下是这样 Clean <- function(data) { if("P" %in% col
test <- data.frame(A = c(1:10),
B = c(1:10), C = c(1:10),
P = c(1:10))
test您必须从函数返回一个值,然后将该值分配给对象。与许多其他语言不同,R不会就地修改对象,至少在没有大量工作的情况下是这样
Clean <- function(data) {
if("P" %in% colnames(data)) {
data$Z <- NA
} else {
cat("doobedooo"
}
return(data)
}
test <- Clean(test)
Clean您必须从函数返回一个值,然后将该值分配给对象。与许多其他语言不同,R不会就地修改对象,至少在没有大量工作的情况下是这样
Clean <- function(data) {
if("P" %in% colnames(data)) {
data$Z <- NA
} else {
cat("doobedooo"
}
return(data)
}
test <- Clean(test)
Clean@HongOi答案是您问题的直接答案。我的是解决你问题的最好办法。由于要创建其他列的组合,因此可以使用transform
(或中的),例如:
if('P' %in% colnames(test))
test <- transform(test,Z={## you can put any statement here
x=P+1
x^2
round(x/12,2)
}
)
head(test)
A B C P Z
1 1 1 1 1 0.17
2 2 2 2 2 0.25
3 3 3 3 3 0.33
4 4 4 4 4 0.42
5 5 5 5 5 0.50
6 6 6 6 6 0.58
if('P'%in%colnames(test))
测试@HongOi答案是你问题的直接答案。我的是解决你问题的最好办法。由于要创建其他列的组合,因此可以使用transform
(或中的),例如:
if('P' %in% colnames(test))
test <- transform(test,Z={## you can put any statement here
x=P+1
x^2
round(x/12,2)
}
)
head(test)
A B C P Z
1 1 1 1 1 0.17
2 2 2 2 2 0.25
3 3 3 3 3 0.33
4 4 4 4 4 0.42
5 5 5 5 5 0.50
6 6 6 6 6 0.58
if('P'%in%colnames(test))
前面的答案已经给出了你所需要的一切。然而,还有另一种方法来解决这些问题。在R
中,您可以使用environment
通过引用来设置和添加数据,而不是返回整个表(即使您更改了其中的一部分)
env前面的答案已经给出了您所需要的一切。然而,还有另一种方法来解决这些问题。在R
中,您可以使用environment
通过引用来设置和添加数据,而不是返回整个表(即使您更改了其中的一部分)
env