데이터 프레임에로드 된 460K 관측치가있는 데이터 세트가 data
입니다.dplyr mutate 잘못된 결과가있는 함수 호출
$ exeroft1 <int> NA, 105, NA, 205, NA, 102, 220, 102, 102, 220, 230, NA, NA, 105, 102, 210, 203, NA, NA, 107, 103, NA, 203, NA, NA, 105, 107, NA, 102, NA, 107, NA, 107, 103, ...
제가 다른 값으로 값 변환은 다음 함수에 exeroft1
의 각 값을 전달해야 : 변수 중 하나는 다음과 같이 정의된다 여기서
calculateWeeklyExercise <- function(value) {
if (value > 200) {
timesWeekly = (value - 200)/4
} else {
timesWeekly = (value - 100)
}
timesWeekly
}
일부 R 부호로서 않는 모든 처리 :
data %>%
# Filter missing values
filter(!is.na(exeroft1)) %>%
# Add a column to the data frame which represents exercise rate
mutate(weeklyExercise = calculateWeeklyExercise(exeroft1)) %>%
# Select some values
select(educa, sex, exeroft1, weeklyExercise)
이 코드를 실행하면, 내가 이해할 수없는 다음과 같은 경고를 얻을 :
Warning message:
In if (value > 200) { :
the condition has length > 1 and only the first element will be used
저는 R에 익숙하지 않습니다. 함수에 전달하는 값이 정수로 처리되지 않는 것 같습니다. 모든 값이 < 인 경우 올바른 값이 계산됩니다. 200보다 큰 값은 200이 아닙니다. 따라서 본질적으로 함수에서 else 절만이 실행될 것으로 보인다.
길이가 1 이상일 때'if/else' 문제와 관련이 있습니다'ifelse'를 사용하거나 각 행에 적용 할 경우'data %> % # 필터 누락 값 필터 .na (exeroft1)) %> % rowwise() %> %>'하고해라. – akrun
@akrun - 나는 이해하지 못합니다. 'value'가 정수일 때 길이가 1보다 큰 것으로 취급되는 이유는 무엇입니까? –
(재현 가능한 예제가 없다면) 값이 입력으로 열을 가져오고 열의 길이가 1보다 커야합니다. 즉, if (1 : 3> 2) 1 '은 동일한 경고를받습니다. – akrun