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
}
答案 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。