R 将函数应用于数据帧列的每个元素
我是R的新手,我有一个问题,我有一个数据框,我想把这个函数应用到G3列的每个元素上R 将函数应用于数据帧列的每个元素,r,for-loop,apply,lapply,sapply,R,For Loop,Apply,Lapply,Sapply,我是R的新手,我有一个问题,我有一个数据框,我想把这个函数应用到G3列的每个元素上 fun_pass <- function(calif){ if(calif >= 10){ x <- 1 }else{ x <-0 } return(x) } fun_pass=10){ x问题在于未矢量化的if/else。如果我们将函数更改为ifelse,它将起作用。另一个问题是apply带有MARGIN它需要一个data.frame/matrix。这里
fun_pass <- function(calif){
if(calif >= 10){
x <- 1
}else{
x <-0
}
return(x)
}
fun_pass=10){
x问题在于未矢量化的if/else
。如果我们将函数更改为ifelse
,它将起作用。另一个问题是apply
带有MARGIN
它需要一个data.frame/matrix。这里,它正在提取一个向量
'G3'
fun_pass <- function(calif) ifelse(calif >= 10, 1, 0)
如果是单列,请使用
mat_data$pass <- fun_pass(mat_data$G3)
mat_data$pass尝试:
mat_数据$pass您能dput(mat_数据)吗
在您的控制台中,将输出粘贴到问题中以帮助您。还有其他方法可以达到您想要的!类似于?@Alo是的,如果您检查我创建的fun\u pass,它将使用ifelse
而不是if/else
if/else
需要单个元素,即长度标量1@Alo我想你正在将自己的函数与if/else
一起使用。如果将其更改为我显示的函数,则不会发出警告提示,它可以工作c:
fun_pass <- function(calif) as.integer(calif >= 10)
mat_data$pass <- fun_pass(mat_data$G3)
mat_data$pass <- sapply(X = mat_data$G3, FUN = fun_pass)
mat_data <- data.frame(G3 = 1:20)
mat_data$pass <- sapply(X = mat_data$G3, FUN = fun_pass)
mat_data
# G3 pass
# 1 1 0
# 2 2 0
# 3 3 0
# 4 4 0
# 5 5 0
# 6 6 0
# 7 7 0
# 8 8 0
# 9 9 0
# 10 10 1
# 11 11 1
# 12 12 1
# 13 13 1
# 14 14 1
# 15 15 1
# 16 16 1
# 17 17 1
# 18 18 1
# 19 19 1
# 20 20 1