R:没有for循环怎么做?

时间:2016-06-03 21:25:31

标签: r loops for-loop vectorization

R中的以下代码使用for循环。如果没有for-loop(可能通过向量化),我可以用什么方法解决同样的问题?

我正在查看一个包含许多列的不熟悉的数据集(243),并且我试图找出哪些列包含非结构化文本。作为第一次检查,我将标记1)类'character'和2)至少有10个唯一值的列。

openEnded <- rep(x = NA, times = ncol(scaryData))
for(i in 1:ncol(scaryData)) {
  openEnded[i] <- is.character(scaryData[[i]]) & length(unique(scaryData[[i]])) >= 10
  }

1 个答案:

答案 0 :(得分:1)

这可能会完成这项工作:

openEnded <- apply(scaryData, 2, function(x) is.character(x) & length(unique(x))>=10)

在循环中,您只需遍历列(apply(scaryData, 2)部分(即function(x) cond1 & cond2部分)一个匿名函数,该函数结合了您的两个条件(data.frame)。

我猜您的数据是sapply(scaryData, 2, function(x) ...),因此*apply也可以。

可以找到关于 SQL> select to_char(sysdate,'dd-Mon-yyyy hh24:mi:ss') full_date, 2 to_char(sysdate,'yyyy-mm-dd') date_only, 3 to_char(sysdate,'hh24:mi:ss') time_only 4 from dual; FULL_DATE DATE_ONLY TIME_ONL -------------------- ---------- -------- 03-Jun-2016 16:30:38 2016-06-03 16:30:38 家庭的好文章there