函数循环遍历R中数据框中的列列表

时间:2016-09-16 06:10:10

标签: r string list function loops

我正在尝试在r中创建一个函数或循环,它可以遍历特定字符串的列列表,即'123',并创建一个带有指示符变量的新列,即如果字符串是0则为0或1出现在已定义的列中。

请参阅下面的示例 - 我想创建一个函数/循环,它将检测在df1到df5的任何列中是否找到字符串'123',如果找到该字符串,则new_column将为1,否则将为0

  index df1 df2 df3 df4 df5 new_column
1     1 123 999 999 999 999          1
2     2 999 123 999 999 999          1
3     3 123 999 999 999 999          1
4     4 999 999 999 999 999          0
5     5 999 999 123 999 999          1
6     6 999 999 999 999 999          0

2 个答案:

答案 0 :(得分:0)

一种可能的解决方案(确保123为numeric):

df <- cbind(df,new_c = sapply(1:length(df),function(x) ifelse(123 %in% df[x,],1,0)))

> df
  index df1 df2 df3 df4 df5 new_c
1     1 123 999 999 999 999     1
2     2 999 123 999 999 999     1
3     3 123 999 999 999 999     1
4     4 999 999 999 999 999     0
5     5 999 999 123 999 999     1
6     6 999 999 999 999 999     0

数据:

> df
  index df1 df2 df3 df4 df5
1     1 123 999 999 999 999
2     2 999 123 999 999 999
3     3 123 999 999 999 999
4     4 999 999 999 999 999
5     5 999 999 123 999 999
6     6 999 999 999 999 999

答案 1 :(得分:0)

我们可以将Reduce|

一起使用
df$new_column <- +(Reduce(`|`, lapply(df[2:6], `==`, 123)))