Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 当满足条件时,将函数应用于数据集中的每一行_R_Dplyr - Fatal编程技术网

R 当满足条件时,将函数应用于数据集中的每一行

R 当满足条件时,将函数应用于数据集中的每一行,r,dplyr,R,Dplyr,我有一个布尔变量(parent_boolean)。如果parent\u boolean=True,那么我想对表\u name应用一个函数,如果parent\u boolean=False,那么我想对数据集中的表\u name应用一个不同的函数。在DPLYR中最简单的方法是什么 table_name parent_table parent_boolean column_count <chr>

我有一个布尔变量(parent_boolean)。如果parent\u boolean=True,那么我想对表\u name应用一个函数,如果parent\u boolean=False,那么我想对数据集中的表\u name应用一个不同的函数。在DPLYR中最简单的方法是什么

table_name    parent_table  parent_boolean column_count
 <chr>                                             <chr>                              <lgl>             <dbl>
1 table_1       table_1      TRUE                     1
2 table_2       table_1     FALSE                     3                                      

dp_child <- function(table_name, parent_table) { function runs SQL statement against database) 

dp_parent <- function(table_name) {function runs SQL statement against database) 
table\u name parent\u table parent\u boolean column\u count
1表1表1真1
2表2表1假3

dp_child在使用
mutate
创建新列时,您可以在中使用
ifelse


A在使用
mutate
创建新列时,可以在中使用
ifelse


A这里是一个使用
ifelse()
的基本R解决方案,其中玩具示例如下所示

# two distinct function
f1 <- function(x) x**2
f2 <- function(x) -sqrt(x)

# apply function to column B according to value in column A
df <- data.frame(A = c(T,T,F,T),B = 1:4)
df <- within(df, C <- ifelse(A,f1(B),f2(B)))
编辑 有了文章中的数据框,也许你可以试试下面的代码

result <- apply(df, 1, function(v) {
  if (v["parent_boolean"]) {
    dp_parent(v["table_name"])
  } else {
    dp_child(v["table_name"],v["parent_table"])
  }
})
df <- cbind(df,result)
## or 
# add_column(df, result)

result这里是一个使用
ifelse()
的基本R解决方案,其中给出了一个玩具示例,如下所示

# two distinct function
f1 <- function(x) x**2
f2 <- function(x) -sqrt(x)

# apply function to column B according to value in column A
df <- data.frame(A = c(T,T,F,T),B = 1:4)
df <- within(df, C <- ifelse(A,f1(B),f2(B)))
编辑 有了文章中的数据框,也许你可以试试下面的代码

result <- apply(df, 1, function(v) {
  if (v["parent_boolean"]) {
    dp_parent(v["table_name"])
  } else {
    dp_child(v["table_name"],v["parent_table"])
  }
})
df <- cbind(df,result)
## or 
# add_column(df, result)


结果您能提供最小可再现性数据吗?您能提供最小可再现性数据吗?我得到以下错误:错误:
true
必须是长度1(条件的长度
),而不是2@Onyambu,你说得对,它也可以工作,但我的观点是要明确使用
ifelse
语句,以防OP是R中的初学者。即使是初学者,也不能说
TRUE==TRUE
这不好。我得到了这个错误:
TRUE
必须是长度1(长度
条件
),而不是2@Onyambu,你说得对,它也可以工作,但我的观点是要明确使用
ifelse
语句,以防OP是R中的初学者。即使是初学者,也不能说
TRUE==TRUE
这不好。我得到了这个错误:
TRUE
必须是长度1(条件的长度
),不2@mrichey我更新了我的答案,所以如果可以的话你可以试试。谢谢!对于每一行,输出似乎是一个单独的tible:row_计数。有没有办法解决这个问题column@mrichey,使用
cbind(df,result)
添加列(df,result)
如何?在回答中查看我的更新谢谢你的帮助!我收到此错误:错误:
true
必须是长度1(条件的长度),而不是2@mrichey我更新了我的答案,所以如果可以的话你可以试试。谢谢!对于每一行,输出似乎是一个单独的tible:row_计数。有没有办法解决这个问题column@mrichey,使用
cbind(df,result)
添加列(df,result)
如何?在回答中查看我的更新谢谢你的帮助!