R

Avoid common R mistakes — vectorization traps, NA propagation, factor surprises, and indexing gotchas.

Safety Notice

This listing is from the official public ClawHub registry. Review SKILL.md and referenced scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "R" with this command: npx skills add ivangdavila/r

Vectorization

  • Loops are slow — use apply(), lapply(), sapply(), or purrr::map()
  • Vectorized functions operate on whole vectors — sum(x) not for (i in x) total <- total + i
  • ifelse() is vectorized — if is not, use ifelse() for vector conditions
  • Column operations faster than row — R is column-major

Indexing Gotchas

  • R is 1-indexed — first element is x[1], not x[0]
  • x[0] returns empty vector — not error, silent bug
  • Negative index excludes — x[-1] removes first element
  • [[ extracts single element — [ returns subset (list stays list)
  • df[, 1] drops to vector — use df[, 1, drop = FALSE] to keep data frame

NA Handling

  • NA propagates — 1 + NA is NA, NA == NA is NA
  • Use is.na() to check — not x == NA
  • Most functions need na.rm = TRUEmean(x) returns NA if any NA present
  • na.omit() removes rows with any NA — may lose data unexpectedly
  • complete.cases() returns logical vector — rows without NA

Factor Traps

  • Old R converted strings to factors by default — use stringsAsFactors = FALSE or modern R
  • levels() shows categories — but factor values are integers internally
  • Adding new value not in levels gives NA — use factor(x, levels = c(old, new))
  • as.numeric(factor) gives level indices — use as.numeric(as.character(factor)) for values
  • Dropping unused levels: droplevels() — or factor() again

Recycling

  • Shorter vector recycled to match longer — c(1,2,3) + c(10,20) gives 11, 22, 13
  • No error if lengths aren't multiples — just warning, easy to miss
  • Single values recycle intentionally — x + 1 adds 1 to all elements

Data Frames vs Tibbles

  • Tibble never converts strings to factors — safer defaults
  • Tibble never drops dimensions — df[, 1] stays tibble
  • Tibble prints better — shows type, doesn't flood console
  • as_tibble() to convert — from tibble or dplyr package

Assignment

  • <- is idiomatic R — = works but avoided in style guides
  • <<- assigns to parent environment — global assignment, usually a mistake
  • -> right assignment exists — rarely used, confusing

Scope

  • Functions look up in parent environment — can accidentally use global variable
  • Local variable shadows global — same name hides outer variable
  • local() creates isolated scope — variables don't leak out

Common Mistakes

  • T and F can be overwritten — use TRUE and FALSE always
  • 1:length(x) fails on empty x — gives c(1, 0), use seq_along(x)
  • sample(5) vs sample(c(5)) — different! first gives 1:5 permutation
  • String splitting: strsplit() returns list — even for single string

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

Ai Competitor Analyzer

提供AI驱动的竞争对手分析,支持批量自动处理,提升企业和专业团队分析效率与专业度。

Registry SourceRecently Updated
General

Ai Data Visualization

提供自动化AI分析与多格式批量处理,显著提升数据可视化效率,节省成本,适用企业和个人用户。

Registry SourceRecently Updated
General

Ai Cost Optimizer

提供基于预算和任务需求的AI模型成本优化方案,计算节省并指导OpenClaw配置与模型切换策略。

Registry SourceRecently Updated