ifelse和%in%应用于R中数据帧的行

时间:2015-09-11 02:14:34

标签: r dataframe

请原谅我的简单问题,但由于ifelse是矢量化的,不应该遍历我的数据帧行吗?

例如,当我尝试

   df <- data.frame(col1=c("a", "b", "c"),
                    col2=c("d", "e", "f"), 
                    col3=c("g", "h", "i"), stringsAsFactors=FALSE)

    ifelse('a' %in% df, 1, 0)

我的结果是0。

不应该是1,0,0?

在这种情况下,ifelse的重点是什么?我可以以某种方式使用此函数来遍历我的数据帧吗?

1 个答案:

答案 0 :(得分:1)

如果您尝试迭代行而不是列:

apply(df,1, function(y){ ifelse('a' %in% y, 1, 0)})

如果您正在迭代列,那么lapply将起作用:

lapply(df, function(y){ ifelse('a' %in% y, 1, 0)})

(如果您要查找数据框中没有相同行索引和列索引的元素,则差异会更明显。)