R & RStudio Channel
Open in Telegram
326
Subscribers
No data24 hours
+17 days
-330 days
Posts Archive
🔹 ترفند خالی کردن کنسول R با یک خط کد! 🔹
تا حالا شده بخواهید وسط اجرای یه اسکریپت در
RStudio، کنسول رو تمیز کنید تا خروجیهای جدید مرتبتر دیده بشنوند؟
به جای استفاده از ماوس (علامت جاروی گوشه کنسول) یا کلیدهای ترکیبی Ctrl+L، میتوانید با یک دستور ساده این کار را انجام بدید!
در این پست، با ترفندهای cat("\014") و cat("\f") آشنا میشوید که کارتان را حسابی راحت میکنند.
🔸 نکات کاربردی برای خالی کردن کنسول که باید بدونید 🔸
✅ ۱. خالی کردن کنسول با یک دستور ساده
با cat("\014") یا cat("\f") میتوانید کنسول رو فوراً خالی کنید، بدون نیاز به کلیک یا میانبر.
cat("\014") # Clear console instantly
# or
cat("\f") # Same effect, alternative code
✅ ۲. اجرای یکپارچه اسکریپتها
این دستورات به شما اجازه میدهند وسط یک اسکریپت، کنسول رو پاک کنید و خروجیهای بعدی رو مرتب ببینید. قبلاً باید اسکریپت رو تکهتکه اجرا میکردید!
# Some initial output
print("Starting analysis...")
Sys.sleep(1) # Simulate some work
cat("\014") # Clear console
print("New output after clearing!")
✅ ۳. استفاده در توابع برای خروجی تمیز:
وقتی توابع پیچیده مینویسید، میتوانید با cat("\f") کنسول را قبل از چاپ خروجی پاک کنید.
my_function <- function(x) {
cat("\014") # Clear console before output
cat("Results for input ", x, ":\n")
return(x * 2)
}
my_function(5)
# Results for input 5:
# [1] 10
✅ ۴. ترکیب با dplyr در پایپلاینها
برای گزارشهای تمیز در پایپلاینهای dplyr، قبل از چاپ نتایج، کنسول را خالی کنید.
library(dplyr)
df <- tibble(x = 1:3, y = c(10, 20, 30))
cat("\f") # Clear console
df %>% summarise(mean_y = mean(y)) %>% print()
# # A tibble: 1 × 1
# mean_y
# <dbl>
# 1 20
✅ ۵. بهینه برای اسکریپتهای طولانی
وقتی اسکریپت طولانی دارید و میخواهید با source() اجرا کنید، این دستورات تضمین میکنند که کنسول در نقاط دلخواه تمیز بشود.
# Long script example
cat("Initial analysis...\n")
Sys.sleep(1)
cat("\014") # Clear console mid-script
cat("Final results:\n")
print(summary(c(1, 2, 3)))
✅ ۶. تفاوت با Ctrl+L و جاروی دستی
برخلاف Ctrl+L یا جاروی RStudio، این دستورات در اسکریپت قابل برنامهریزی هستند و نیازی به دخالت دستی ندارند.
✅ ۷. نکته حرفهای ۱: ترکیب با پیامهای سفارشی
برای خروجیهای حرفهایتر، قبل از خالی کردن کنسول، یک پیام اضافه کنید.
cat("Clearing console for new results...\n")
Sys.sleep(1) # Short delay for effect
cat("\f") # Clear console
cat("Analysis complete!\n")
✅ ۸. نکته حرفهای ۲: ترکیب با sink
اگه نگران از دست رفتن خروجیهای قبلی هستید، با ترکیب sink() و split = TRUE میتوانید خروجیها را در یک فایل لاگ ذخیره کنید و همزمان کنسول رو برای ادامه تمیز نگه دارید.
sink("log.txt", split = TRUE) # Log output to file and show in console
cat("Step 1: Computing stats...\n")
print(summary(c(1, 2, 3, 4, 5)))
sink() # Stop logging
cat("\f") # Clear console for next output
cat("Step 2: Final results:\n")
print(mean(c(1, 2, 3, 4, 5)))
# Step 2: Final results:
# [1] 3
✅ ٩. اگر نمیخواهید هر دفعه دستور cat("\f") را بنویسید یک تابع تعریف کنید و این دستور را داخل آن قرار دهید:
cls <- function() cat("\f")
# some codes
cls() # clears the console
‼️ این دستورات ممکن است در نرم افزار R عمل نکند.
📸 نکات تصویری و ترفندهای بیشتر در اینستاگرام:
https://instagram.com/r_rstudiopro
💬 برای گفتگو، پرسش و پاسخ و رفع اشکال به گروه تلگرامی ما بپیوندید:
@rrstudiogroup
📡 اگر هنوز عضو نشدید، کانال را دنبال کنید:
@r_rstudio_pro
🧠 با ما بمانید؛ از R بیشتر بدانید، هوشمندتر تحلیل کنید.
#R #RStudio #console #rstats #r_tips #ترفندهای_R #تحلیل_داده #کدنویسی_R🔹 توابع
paste و paste0 در R — ترکیب هوشمند متنها در تحلیل داده 🔹
===========
توابع paste() و paste0() برای چسباندن رشتهها کاربرد دارند، اما قابلیتهای کمتر شناختهشدهای دارند که کدنویسی شما را حرفهایتر میکند.
🔸 ترفندهایی که بسیاری نمیدانند (همراه با مثال) 🔸
✅ ۱. تفاوت اصلی paste() و paste0()
paste() بین رشتهها فاصله میگذارد (sep = " " بهصورت پیشفرض)؛ اما paste0() هیچ فاصلهای نمیگذارد (sep = "").
paste("Hello", "World")
# "Hello World"
paste0("Hello", "World")
# "HelloWorld"
✅ ۲. ساخت سریع نامهای پویا (Dynamic Naming)
برای تولید خودکار نام فایل، ستون، یا متغیر:
paste0("file_", 1:3, ".csv")
# "file_1.csv" "file_2.csv" "file_3.csv"
✅ ۳. ترکیب رشتهها با collapse برای خروجی واحد
ترکیب همه عناصر یک بردار در یک رشته نهایی:
fruits <- c("apple", "banana", "orange")
paste(fruits, collapse = ", ")
# "apple, banana, orange"
✅ ۴. تولید پیامهای سفارشی در حلقهها
for (i in 1:3) { cat(paste0("Processing item ", i, "...\n")) }
# output
# Processing item 1...
# Processing item 2...
# Processing item 3...
✅ ۵. ساخت مسیر فایل یا URL با paste0()
folder <- "data"
file <- "report_2025"
paste0(folder, "/", file, ".csv")
# "data/report_2025.csv"
✅ ۶. ترکیب با dplyr برای برچسبگذاری هوشمند
library(dplyr)
df <- tibble(id = 1:3, value = c(10, 20, 30))
df %>% mutate(label = paste0("ID_", id, "_val_", value))
# "ID_1_val_10" "ID_2_val_20" "ID_3_val_30"
✅ ۷. کنترل دقیق فرمت با sprintf()
values <- c(3.14159, 2.71828)
paste(sprintf("Value: %.2f", values))
# "Value: 3.14" "Value: 2.72"
📌 نکته تکمیلی: برای تولید رشتههای عددی با تعداد رقم ثابت یا پیشوند خاص، از sprintf() در ترکیب با paste0() استفاده کنید.
---------------------------
💬 برای گفتگو، پرسش و پاسخ و رفع اشکال به گروه تلگرامی ما بپیوندید:
@rrstudiogroup
📡 اگر هنوز عضو نشدید، کانال را دنبال کنید:
@r_rstudio_pro
📸 نکات تصویری و ترفندهای R را در اینستاگرام دنبال کنید:
https://instagram.com/r_rstudiopro
🧠 با ما بمانید؛ از R بیشتر بدانید، هوشمندتر تحلیل کنید.
#R #RStudio #paste #paste0 #rstats #r_tips #ترفندهای_R #تحلیل_داده #کدنویسی_R🔰 دوره جامع آموزش R و RStudio: بخش مقدماتی
📊 یک بار برای همیشه آر را به صورت اصولی و پایهای یاد بگیرید📊
👨🏫 مدرسین دوره:
• دکتر حیدرعلی مردانیفرد
• دکتر امیر کسائیان
📅 زمان برگزاری: از ۱۸ مرداد
📆 شنبه و سهشنبه | 🕕 ساعت ۱۸ تا ۲۰
💻 ۱۱ جلسه آموزشی دو ساعته
🎯🎯 برخی سرفصلهای دوره:
✅ آشنایی با R و RStudio و تنظیمات اولیه
✅ انواع داده، عملگرها و ساختارهای دادهای پایه
✅ ورود/خروج داده، اندیسگذاری و فیلتر کردن دادهها
✅ مدیریت دادههای ناقص و پرت، پاکسازی دادهها
✅ برنامهنویسی برداری، ساختارهای کنترلی و توابع
✅ تولید داده تصادفی، آمار توصیفی و مصورسازی پایه
✅ تمرینهای دورهای + پروژه نهایی عملی
📣📣 مزایای دوره:
✅ طراحی منسجم، گامبهگام و کاربردی
✅ پشتیبانی کامل در گروه تلگرامی اختصاصی دوره
✅ تدریس توسط اساتید مجرب با رویکرد ترکیبی از آمار نظری و تحلیلهای عملی
✅ 🎓 ارائه گواهی معتبر
✅ امکان مشاهده مجدد ویدئوها برای مرور دقیق مطالب
💎💎 تخفیفات ویژه برای دانشجویان عزیز
🌐 ثبتنام و جزئیات کامل دوره:
👉 https://evand.com/events/rstudio1-intro
📣 پشتیبانی: @R_RStudio_Pro
🔹 ترفندهای کاربردی و جذاب
any() و all() در R 🔹
توابع any() و all() در R ساده به نظر میرسند، اما با چند ترفند هوشمندانه میتوانند کد شما رو سریعتر و حرفهایتر کنند.
در این پست، نکاتی رو میبینید که هم برای مبتدیها جذاب است و هم حرفهایها رو شگفتزده میکند!
🔸 ترفندهای کاربردی any() و all() که باید بدانید 🔸
✅ ۱. بررسی سریع شرطها بدون حلقه با any() و all() میتوانید به جای حلقههای طولانی، شرطها را سریع بررسی کنید.
x <- c(10, 20, 30, 40)
any(x > 35)
# TRUE (because 40 > 35)
all(x > 5)
# TRUE (all values are greater than 5)
✅ ۲. مدیریت NA با خیال راحت: وقتی دادههایتان NA دارد، na.rm = TRUE کار رو ساده میکند.
y <- c(1, NA, 3, 4)
any(y > 2, na.rm = TRUE)
# TRUE (because 3 and 4 exist)
all(y > 0, na.rm = TRUE)
# TRUE (all non-NA values are positive)
✅ ۳. بررسی ستونها در دیتافریم به جای بررسی تکتک ستونها، با any() و all() میتوانید کل دیتافریم را سریع اسکن کنید.
df <- data.frame(a = c(1, 2, 3), b = c(-4, 5, 6))
all(df$b > 0)
# FALSE (because -4 exists)
any(df$a == 2)
# TRUE (value 2 exists in column a)
✅ ۴. ترکیب با apply برای ماتریسها برای بررسی ردیفها یا ستونهای ماتریس، apply رو با any() یا all() ترکیب کنید.
mat <- matrix(c(1, 2, 3, 4, 0, 6), nrow = 2)
any(apply(mat, 1, function(row) all(row > 0)))
# TRUE (first row: 1, 2, 3 are all positive)
✅ ۵. اعتبارسنجی دادهها در dplyr در پایپلاینهای dplyr، از any() و all() برای چک کردن دادهها استفاده کنید.
library(dplyr)
df <- tibble(x = c(1, 2, NA, 4), y = c(5, 6, 7, 8))
df %>% filter(all(x > 0, na.rm = TRUE)) %>% nrow()
# 4 (all non-NA values in x are positive, keep all rows)
✅ ۶. بهینهسازی در دادههای بزرگ any() و all() در دادههای بزرگ به خاطر short-circuit evaluation خیلی سریع هستند.
big_data <- sample(1:100, 1e6, replace = TRUE)
system.time(any(big_data == 100))
# user system elapsed
# 0.005 0.001 0.006
# Stops as soon as 100 is found
✅ ۷. شرطهای ترکیبی برای تصمیمگیری با ترکیب چند شرط، منطق پیچیده رو ساده کنید.
df <- data.frame(a = c(1, 2, 3), b = c(4, 5, 6))
if (any(df$a == 2 & df$b == 5)) print("Row with a=2 and b=5 exists!")
# "Row with a=2 and b=5 exists!"
📸 نکات تصویری و ترفندهای بیشتر در اینستاگرام:
https://instagram.com/r_rstudiopro
💬 برای گفتگو، پرسش و پاسخ و رفع اشکال به گروه تلگرامی ما بپیوندید:
@rrstudiogroup
📡 اگر هنوز عضو نشدید، کانال را دنبال کنید:
@r_rstudio_pro
🧠 با ما بمانید؛ از R بیشتر بدانید، هوشمندتر تحلیل کنید.
#R #RStudio #any #all #rstats #r_tips #ترفندهای_R #تحلیل_داده #کدنویسی_R💎نکته کاربردی در استفاده از تلگرام💎
متن هایی که به صورت
مونواسپیس (Monospace) هستند اگر بر روی آنها تپ یا کلیک بزنید خودبخود کپی میشوند.
بنابراین قسمت های کد و برنامه نویسی پیام ها در صورتی که به این فرمت نوشته شده باشند برای کپی آنها کافی است روی آنها تپ یا کلیک کنید؛ میتوانید این مطلب را روی نمونه زیر امتحان کنید:
rm(list=ls))
plot(rnorm(40))
✅ در پیام های این کانال برای سهولت استفاده از مطالب، همه دستورات R با این فرمت نوشته میشوند.🔹 قدرت پنهان تابع
which() در R 🔹
تابع which() برای یافتن اندیسهایی است که یک شرط خاص را برآورده میکنند. اما کاربردهای حرفهایتری هم دارد که معمولاً کمتر شناخته شدهاند.
🔸 نکات طلایی درباره which() که بسیاری نمیدانند 🔸
✅ ۱. تفاوت which با فیلتر مستقیم
تابع which اندیس میدهد، فیلتر مستقیم مقدار را.
x <- c(10, 20, 30, 40)
which(x > 15)
# 2 3 4
x[x > 15]
# 20 30 40
✅ ۲. اولین یا آخرین وقوع یک شرط
با ترکیب which با min یا max سریعاً موقعیت را پیدا کنید.
x <- c(NA, 5, 8, NA, 10)
min(which(!is.na(x)))
# 2
max(which(x > 6))
# 5
✅ ۳.تابع which در ماتریس — موقعیت ردیف و ستون
با arr.ind = TRUE اندیس دو بعدی دریافت میکنید.
mat <- matrix(c(1,0,0,0,1,0,1,0,1), nrow=3)
which(mat == 1)
# [1] 1 5 7 9
which(mat == 1, arr.ind = TRUE)
# row col
# [1,] 1 1
# [2,] 2 2
# [3,] 1 3
# [4,] 3 3
✅ ۴. استخراج نام عناصر منطبق
برای بردارهای نامدار، نامهای مربوط به شرط را بگیرید.
v <- c(a=10, b=20, c=30)
names(v)[which(v > 15)]
# “b” “c”
✅ ۵. دقت در فاکتورها (factor)
تابع which بر اساس مقدار فاکتور عمل میکند، نه عدد داخلی.
f <- factor(c(“low”, “medium”, “high”))
which(f == “medium”)
# 2
which(f == 2)
# integer(0)
✅ ۶. سرعت بیشتر which در دادههای بزرگ
تابع which معمولاً از فیلتر مستقیم سریعتر است.
x <- sample(c(1:100, rep(NA, 1e3)), 1e8 , replace = TRUE)
system.time(a <- which(x > 50))
# user system elapsed
# 0.302 0.070 0.371
system.time(b <- x[x > 50])
# user system elapsed
# 0.491 0.366 1.122
✅ ۷. پیدا کردن موقعیت NA یا بررسی شرط کلی
which(is.na(x))
# اندیس NAها
any(x > 10)
# شرط برقرار است یا نه؟
📸 نکات تصویری و ترفندهای بیشتر در اینستاگرام:
https://instagram.com/r_rstudiopro
💬 برای گفتگو، پرسش و پاسخ و رفع اشکال به گروه تلگرامی ما بپیوندید:
@rrstudiogroup
📡 اگر هنوز عضو نشدید، کانال را دنبال کنید:
@r_rstudio_pro
🧠 با ما بمانید؛ از R بیشتر بدانید، هوشمندتر تحلیل کنید.
#R #RStudio #which #rstats #r_tips #ترفندهای_R #فیلتر_داده #تحلیل_آمار #کدنویسی_R🔹 عملکرد و تفاوت توابع
match() و %in% را بدانید 🔹
========================
جستجو در یک بردار برای یافتن مجموعهای از عناصر دلخواه از داخل یا خارج از آن بردار
تابع match() برای یافتن موقعیت یا اندیس اولین وقوع یک عنصر یا یک مجموعه از عناصر در یک بردار استفاده میشود.
تابع %in% برای بررسی وجود یا عدم وجود یک یا چند عنصر در یک بردار کاربرد دارد.
🔸 نکاتی که بسیاری از کاربران درباره این دو تابع نمیدانند (همراه با مثال) 🔸
✅ ۱. تابع match() شماره اندیس را میدهد؛ %in% فقط TRUE/FALSE
x <- c("apple", "banana", "cherry")
match("banana", x)
# Output: 2
"banana" %in% x
# Output: TRUE
✅ ۲. در تابع match() مقادیر تکراری درون x تاثیری ندارد و فقط اندیس اولین وقوع را برمی گرداند:
x <- c("apple", "banana", "cherry" , "apple")
match("apple", x)
# Output: 1
✅ ۳. هر دو تابع میتوانند روی بردارها عمل کنند و دنبال مجموعه ای از عناصر به صورت مستقل از یگدیگر درون یک بردار دیگر بگردند
📌 اگر ورودی اول برداری باشد، match() برای هر عنصر، موقعیت آن در x را میدهد.
اگر عنصری وجود نداشته باشد، NA برمیگرداند.
match(c("cherry", "apple", "orange"), x)
# Output: 3 1 NA
📌 تابع %in% هم میتواند روی بردار کار کند و نتیجهای منطقی برای هر عنصر برمیگرداند:
c("cherry", "orange") %in% x
# Output: TRUE FALSE
✅ ۴. فیلتر کردن با match() سریعتر و مرتبتر است؛ فرض کنید برداری از عناصر دارید و می خواهید بدانید کدام ها در x حضور دارند و کدام ها نه:
target <- c("banana", "cherry")
x[match(target, x)]
# Output: "banana" "cherry"
روش دیگر با %in%:
x[x %in% target]
# Output: "banana" "cherry"
👈 تفاوت ۱: خروجی match() به ترتیب target است ولی %in% ترتیب x را حفظ میکند.
👈 تفاوت ۲: اگر عنصر یا عناصری در x وجود نداشته باشد match() به جای آنها NA برمی گرداند ولی %in% آنها را نادیده می گیرد.
target <- c("banana", "cherry" , "orange")
x[match(target, x)]
# Output: "banana" "cherry" NA
na.omit(x[match(target, x)])
# Output: "banana" "cherry"
x[x %in% target]
# Output: "banana" "cherry"
✅ ۵. مرتبسازی سفارشی با match()
order_custom <- c("banana", "cherry", "apple")
x[order(match(x, order_custom))]
# Output: "banana" "cherry" "apple"
✅ ۶. تابع match() نمیتواند NA را تشخیص دهد
x <- c("apple", NA, "banana")
match(NA, x)
# Output: NA
which(is.na(x))
# Output: 2
🔹 برای پیدا کردن NA، همیشه از is.na() استفاده کنید.
------------------------------------------------
💬 برای گفتگو، پرسش و پاسخ و رفع اشکال به گروه تلگرامی ما بپیوندید:
@rrstudiogroup
📡 اگر هنوز عضو نشدید، کانال را دنبال کنید:
@r_rstudio_pro
📸 نکات تصویری و ترفندهای R را در اینستاگرام دنبال کنید:
https://instagram.com/r_rstudiopro
🧠 با ما بمانید؛ از R بیشتر بدانید، هوشمندتر تحلیل کنید.
#R #RStudio #match #in_operator #rstats #r_tips #آموزش_R #ترفندهای_R #فیلتر_داده #مرتب_سازی🔹 وارد کردن داده به R با
scan(): سریع، ساده و منعطف 🔹
اگر میخواهید دادهای را از فایل متنی یا حتی بهصورت دستی از کاربر وارد کنید، تابع scan() یکی از قدیمیترین و سریعترین ابزارهاست.
----------------------------------
📌 مثال ساده برای خواندن دستی:
x <- scan()
1 2 3 4 5
# Enter بزنید برای پایان دادن
🔸 خروجی: یک بردار عددی x با مقادیر واردشده.
---------------------------------
📌 خواندن داده از فایل:
y <- scan("data.txt")
🔸 این فایل باید در مسیر کاری باشد یا مسیر کامل داده شود. scan() دادهها را بهصورت بردار وارد میکند—ساده و مؤثر!
---------------------------------
💡 نکات تکمیلی:
برای خواندن دادههای متنی:
scan(what = "character")
برای خواندن چند ستون عددی:
matrix(scan(...), ncol = X, byrow = TRUE)
---------------------------------
💬 برای گفتگو، پرسش و پاسخ و رفع اشکال به گروه تلگرامی ما بپیوندید:
@rrstudiogroup
📡 اگر هنوز عضو نشدید، کانال را دنبال کنید:
@r_rstudio_pro
📸 نکات تصویری و ترفندهای R را در اینستاگرام دنبال کنید:
https://instagram.com/r_rstudiopro
🧠 با ما بمانید؛ از R بیشتر بدانید، هوشمندتر تحلیل کنید.
#R #RStudio #scan #ورود_داده #r_tips #آموزش_R #rstats #sink #خواندن_دادهhttps://Evans.com/events/rstudio1-intro
🎉مژده به دانشجویان عزیز:🎉
امکان شرکت در دوره با ۲۰ درصد تخفیف ویژه (علاوه بر تخفیفات قبلی) برای شما فراهم شد.
برای دریافت کد تخفیف اختصاصی، لطفاً کارت دانشجویی خود را به دایرکت ارسال کنید.
🔹 ذخیره خودکار خروجیها در فایل متنی با
sink() 🔹
گاهی میخواهید خروجیهای تحلیل، خلاصه داده یا نتایج مدلسازی را در یک فایل متنی ذخیره کنید—بدون نیاز به کپی/پیست! تابع sink() دقیقاً همین کار را انجام میدهد.
⸻⸻⸻⸻⸻
📌 مثال کاربردی:
فرض کنید میخواهید خلاصهای از دادهی mtcars را در فایل ذخیره کنید:
sink("output.txt")
summary(mtcars)
sink()
🔸 با اجرای کد بالا، خروجی تابع summary() به جای Console در فایل output.txt ذخیره میشود.
🔸 با دستور دوم sink() دوباره خروجیها به Console برمیگردند.
⸻⸻⸻⸻⸻
📌 کاربردهای sink():
✅ گزارشگیری خودکار
✅ ذخیره پیامهای خطا و هشدار
✅ نگهداری نتایج تحلیلها برای مستندسازی
⸻⸻⸻⸻⸻
💡 نکته حرفهای:
میتوانید از
sink("file.txt", append = TRUE)
برای افزودن محتوا به فایل (بدون پاک شدن اطلاعات قبلی) استفاده کنید.
⸻⸻⸻⸻⸻
💬 برای گفتگو، پرسش و پاسخ و رفع اشکال به گروه تلگرامی ما بپیوندید:
https://t.me/rrstudiogroup
📡 اگر هنوز عضو نشدید، کانال را دنبال کنید:
https://t.me/r_rstudio_pro
📸 نکات تصویری و ترفندهای R را در اینستاگرام دنبال کنید:
https://instagram.com/r_rstudiopro
🧠 با ما بمانید؛ از R بیشتر بدانید، هوشمندتر تحلیل کنید.
#R #RStudio #sink #r_tips #ذخیره_خروجی #آموزش_R #rstats🔹 استفاده از
pipe در R: %>% يا |> 🔹
⸻⸻⸻⸻⸻⸻
در تحلیل داده با R، استفاده از pipe ها ابزار بسیار مهمی هستند برای خواناتر و مرتبتر کردن کد.
دو شکل رایج آنها:
✅ %>% از بستهی magrittr (و توسط tidyverse استفاده میشود)
✅ |> اپراتور جدید پایهای در R از نسخهی 4.1 به بعد
⸻
📌 تفاوتهای کلیدی:
1️⃣ وابستگی به بسته:
👈 %>% نیازمند library(magrittr) یا library(dplyr)
👈|> در پکیج base وجود دارد و نیازی به فراخوانی بستهی جداگانه ندارد
2️⃣ نحوه ارسال آرگومانها:
👈 %>% از عملگر . برای کنترل محل آرگومان استفاده میکند؛ مثلاً:
x %>% f(., y)
👈 |> فقط اولین آرگومان را pipe میکند و از \() برای کنترل بیشتر استفاده میشود؛ مثلاً:
x |> \(z) f(z, y)
3️⃣ سازگاری با tidyverse:
👈 %>% به صورت کامل با tidyverse هماهنگ است
👈 |> ممکن است در برخی موارد با syntax خاص dplyr ناسازگار باشد
⸻
📌 کدام را انتخاب کنیم؟
👈 اگر از tidyverse زیاد استفاده میکنید، %>% همچنان گزینهای محبوب است.
👈 اگر بستهای نمیخواهید لود کنید و R شما نسخه 4.1 به بالا است، |> گزینهی سادهتری است.
⸻
📎 برای دیدن یک نسخه خلاصه و قابل مشارکت از این محتوا به پیج اینستاگرام ما سر بزنید:
📌 instagram.com/r_rstudiopro
📎 همچنین در کانال تلگرام ما عضو شوید:
🔗 t.me/r_rstudio_pro
🗨 و برای پرسش و گفتگو وارد گروه شوید:
🔗 t.me/rrstudiogroup🔹 ترفندهای کار با تاریخها در R با بستهی
lubridate 🔹
کار با تاریخها همیشه یکی از چالشهای مهم در تحلیل دادههاست. بستهی قدرتمند lubridate در R این کار را بسیار ساده و منعطف میکند.
🔸 برای تبدیل رشته به تاریخ از توابعی مثل ymd و mdy و dmy استفاده کنید:
library(lubridate)
ymd("2025-07-16")
mdy("July 16, 2025")
🔸 میخواهید فقط ماه یا سال را استخراج کنید؟ کافیست بنویسید:
month(today()) # شماره ماه جاری
year(today()) # سال جاری
🔸 میخواهید با تاریخها محاسبه کنید؟ مثلا چند روز از تولد شما گذشته:
today() - ymd("1990-01-01")
🔸 یا مثلاً چند روز به پایان سال باقی مانده:
ymd("2025-12-31") - today()
پکیج lubridate خوانایی کد شما را بالا میبرد و به جای کار با as.Date و format و محاسبات پیچیده، همه چیز را سادهتر میکند!
💬 برای گفتگو، پرسش و پاسخ و رفع اشکال به گروه تلگرامی ما بپیوندید:
https://t.me/rrstudiogroup
📡 اگر هنوز عضو نشدید، کانال را دنبال کنید:
https://t.me/r_rstudio_pro
📸 نکات تصویری و ترفندهای R را در اینستاگرام دنبال کنید:
https://instagram.com/r_rstudiopro
🧠 با ما بمانید؛ از R بیشتر بدانید، هوشمندتر تحلیل کنید.
#R #RStudio #lubridate #rstats #r_tips #آموزش_R #تاریخ🔰 دوره جامع آموزش R و RStudio: بخش مقدماتی
🌋 پژوهشکده بیماریهای گوارش و کبد دانشگاه علوم پزشکی تهران با همکاری مرکز پژوهشهای علمی دانشجویان دانشگاه علوم پزشکی تهران
“دوره جامع آموزش R و RStudio” را به صورت آنلاین برگزار میکند.
این دوره به گونهای طراحی شده است که مخاطبان را با یکی از پرکاربردترین ابزارهای تحلیل داده و برنامهنویسی آماری آشنا کند. زبان R و محیط RStudio امروزه در بسیاری از پروژههای پژوهشی، مدلسازی، مصورسازی دادهها و نگارش گزارشهای تحلیلی نقش مهمی ایفا میکنند. هدف دوره، ایجاد درک عمیق و کاربردی از مبانی این ابزارها در قالب جلسات منسجم، روان و پروژهمحور است.
⸻
💡 چرا این دوره از دورههای مشابه متمایز است؟
✅ طراحی آموزشی منسجم و گامبهگام برای یادگیری عمیق و کاربردی زبان R و محیط RStudio
✅ تمرکز بر مفاهیم پایهای در کنار تمرینات مستمر، پروژههای کوچک در طول دوره و ارائه یک پروژه نهایی عملی برای تثبیت آموختهها
✅ بهرهمندی از تجربه و تخصص دو مدرس از دانشگاههای معتبر کشور با رویکردی ترکیبی از آمار نظری و تحلیلهای کاربردی
✅ امکان مشاهدهی مجدد جلسات ضبطشده برای مرور و تعمیق یادگیری
✅ ارائه گواهی معتبر با قابلیت استفاده در رزومههای پژوهشی و شغلی
✅ پشتیبانی آموزشی اختصاصی در طول دوره و پس از آن از طریق گروه تلگرامی مخصوص دوره برای پاسخ به سوالات، تمرینات و راهنمایی در اجرای پروژهها
⸻
🎯 مخاطبین این دوره
• دانشجویان و دانشآموختگان رشتههای علوم پزشکی، آمار، اپیدمیولوژی، بهداشت، زیستفناوری و علوم داده
• اعضای هیئت علمی و پژوهشگران علاقمند به تحلیل دادهها
• کلیه علاقهمندان به یادگیری عمیق، اصولی و کامل برنامهنویسی و تحلیل دادهها با زبان R، در هر سطح از تجربه
⸻
🗓 زمان برگزاری دوره:
👈 از ۱۶ مرداد تا ۱۶ شهریور ۱۴۰۴
📆 روزهای شنبه و سهشنبه
🕕 ساعت ۱۸:۰۰ تا ۲۰:۰۰
🔹 با تدریس:
• دکتر حیدرعلی مردانیفرد، استادیار آمار ریاضی، دانشگاه یاسوج
• دکتر امیر کسائیان، استادتمام آمار زیستی، دانشگاه علوم پزشکی تهران
🔸 به صورت آنلاین در بستر ایوند
🔸 همراه با ضبط کامل جلسات و امکان مشاهده مجدد
🔹 همراه با ارائه گواهی معتبر از سوی پژوهشکده بیماریهای گوارش و کبد دانشگاه علوم پزشکی تهران
💵 با تخفیف ویژه برای دانشجویان عزیز
🌐 لینک ثبتنام:
👉 https://evand.com/events/rstudio1-intro
📣 سرفصلهای مباحث و اطلاعات کامل تر دوره در لینک بالا قابل مشاهده است.
📣 🌟 جهت دریافت اطلاعات بیشتر و ارتباط با پشتیبان دوره با دایرکت کانال تلگرام زیر در ارتباط باشید:
🆔 @R_RStudio_Pro
🔰 دوره آموزش گامبهگام و جامع R و RStudio: بخش مقدماتی در ۱۱ جلسه دو ساعته
👨🏫 با تدریس دکتر حیدرعلی مردانیفرد و دکتر امیر کسائیان
💻 آنلاین همراه با گواهی معتبر
🌐 ثبتنام و اطلاعات کامل:
👉 https://evand.com/events/rstudio1-intro
🔹 فیلتر کردن دادهها با
dplyr::filter() به جای اندیسگذاری سنتی 🔹
در R، معمولاً برای زیرمجموعهگیری از دادهها از این روش استفاده میشه:
df[df$gender == "Male", ]
اما استفاده از پکیج dplyr و تابع filter این کار رو امنتر و خواناتر میکنه:
library(dplyr)
filter(df, gender == "Male")
🔸 مزایای استفاده از filter:
• کد تمیزتر و قابل فهمتره
• خطاهای اندیسگذاری رو نداره
• با pipeها (%>%) خیلی خوب ترکیب میشه
• در پروژههای بزرگتر، خطایابی و نگهداری کد راحتتر میشه
⸻⸻⸻⸻⸻
🔹 محافظت از اسکریپت با بررسی وجود فایل 🔹
قبل از اینکه فایلی رو بخوانید، همیشه بررسی کنید که وجود دارد یا نه. این کار از خطاهای زمان اجرا جلوگیری میکند:
if (file.exists("data/mydata.csv")) {
df <- read.csv("data/mydata.csv")
} else {
message("warning: The requested file was not found.")
}
🔸 این کار بهویژه موقع اجرای خودکار اسکریپتها یا در محیطهای حساس (مثل سرور یا پروژههای گروهی) اهمیت زیادی داره.
⸻⸻⸻⸻⸻
💬 برای گفتگو، پرسش و پاسخ و رفع اشکال به گروه تلگرامی ما بپیوندید:
https://t.me/rrstudiogroup
📡 اگر هنوز عضو نشدید، کانال را دنبال کنید:
https://t.me/r_rstudio_pro
📸 نکات تصویری و ترفندهای R را در اینستاگرام دنبال کنید:
https://instagram.com/r_rstudiopro
🧠 با ما بمانید؛ از R بیشتر بدانید، هوشمندتر تحلیل کنید.
#R #RStudio #rstats #r_tips #فیلتر_کردن #فایل_خوانی #کدنویسی_امن #آموزش_R🔹 تفاوت بین
NA ،NULL و NaN در R 🔹
در زبان R، سه نوع مقدار خاص وجود دارد که نبود یا غیرمعتبر بودن داده را نمایش میدهند، اما تفاوتهای مهمی بین آنها هست:
🔸 مقدار NA (Not Available):
نمایانگر دادهی گمشده یا نامشخص است.
مثلاً در یک ستون نمرات، اگر نمرهای ثبت نشده باشد، مقدار آن NA خواهد بود.
🔸مقدار NULL:
یعنی هیچ چیزی وجود ندارد. حتی یک مقدار گمشده هم نیست!
در واقع، آبجکت خالی محسوب میشود و در لیستها و دیتافریمها حذف کامل را نمایش میدهد.
معمولا برای آرگومان ورودی توابع و همچنین برای کمیت هایی که قرار است بعداً در ادامه برنامه مقدار دهی شوند و یا طول و نوع انها تغییر کند استفاده می شود.
مثلاً اگر قرار است اطلاعات یک دانشجو را از ورودی بگیریم ولی نمی دانیم که اطلاعات را متقاضی به چه ترتیبی وارد خواهد کرد
یا اگر بخواهیم از بین چندین سطر داده آنهایی که شرایط خاصی را دارند را پیدا کنیم.
🔸 مقدار NaN (Not a Number):
نتیجهی محاسبات نامعتبر عددی مثل صفر تقسیم بر صفر است.
مثلاً نتیجه دستور 0/0 برابر NaN است!
💡 مقایسه و بررسی این مقادیر هم متفاوت است:
is.na(NA) # TRUE
is.null(NULL) # TRUE
is.nan(NaN) # TRUE
⚠️ دقت کنید: is.na(NaN) هم TRUE برمیگرداند، چون NaN یک نوع NA هم هست!
is.null(NA) # FALSE
🔸 آشنایی با این تفاوتها به شما کمک میکنه تا در تحلیل دادهها، تمیزتر و حرفهایتر عمل کنید.
📸 پست امروز اینستاگرام در مورد دستور flter از پکیج dplyr است. برای مشاهده آن و دیدن نکات تصویری و ترفندهای بیشتر، پیج اینستاگرام ما رو دنبال کنید:
https://instagram.com/r_rstudiopro
💬 برای بحث و مثال های بیشتر در مورد این مقادیر و همچنین گفتگو، پرسش و پاسخ و رفع اشکال به گروه تلگرامی ما بپیوندید:
https://t.me/rrstudiogroup
📡 اگر هنوز عضو نشدید، کانال را دنبال کنید:
https://t.me/r_rstudio_pro
🧠 با ما بمانید؛ از R بیشتر بدانید، هوشمندتر تحلیل کنید.
#R #rstats #r_tips #آموزش_R #ناقص_داده🔹 استفاده از تابع
with برای کدنویسی خواناتر 🔹
تابع with() یکی از ابزارهای ساده ولی کاربردی در R است که باعث خواناتر شدن کدهای شما میشود، بهویژه هنگام کار با دیتا فریمها.
🔸 فرض کنید یک دیتافریم به نام df دارید و میخواهید میانگین ستون score را محاسبه کنید. معمولاً مینویسیم:
mean(df$score)
🔸 اما با استفاده از تابع with() میتوانید به شکل سادهتری بنویسید:
with(df, mean(score))
🔸 در این حالت، دیگر نیازی به نوشتن نام دیتافریم قبل از هر ستون نیست. این روش برای اجرای توابع مختلف روی دادهها بسیار مفید و تمیز است، بهویژه وقتی تحلیلهای پیچیدهتری انجام میدهید.
🔸 استفاده از with نهتنها باعث کاهش طول کد میشود، بلکه احتمال خطا را نیز کاهش میدهد.
💡 در کنار with، تابع within هم وجود دارد که برای ویرایش دیتا فریمها مفید است؛ در آینده بیشتر با آن آشنا خواهیم شد.
💬 برای گفتگو، پرسش و پاسخ و رفع اشکال به گروه تلگرامی ما بپیوندید:
https://t.me/rrstudiogroup
📡 اگر هنوز عضو نشدید، کانال را دنبال کنید:
https://t.me/r_rstudio_pro
📸 نکات تصویری و ترفندهای R را در اینستاگرام دنبال کنید:
https://instagram.com/r_rstudiopro
🧠 با ما بمانید؛ از R بیشتر بدانید، هوشمندتر تحلیل کنید.
#R #RStudio #rstats #r_tips #تحلیل_داده #آموزش_R #with🔹 نصب
RTools برای ویندوز 🔹
اگر از ویندوز استفاده میکنید و قصد دارید پکیجهایی را از GitHub یا سورس نصب کنید (مثل brms یا rstan)، باید ابتدا RTools را نصب کنید.
🔸 ابزار RTools مجموعهای از ابزارهای کامپایل است که به R اجازه میدهد پکیجهایی با کدهای C/C++ را روی سیستم شما نصب کند.
🔸 همچنین اگر می خواهید جزء توسعه دهندگان R باشد (مثلا پکیج جدید بنویسید) حتما باید این ابزار را نصب کرده باشید.
🔸 اگر با خطایی مثل این مواجه شدید:
installation of package had non-zero exit status
احتمالاً دلیلش نبودن RTools روی سیستمتان است.
🔸 برای نصب RTools ابتدا نسخهی مناسب با نسخهی R خود را از لینک زیر انتخاب و نصب کنید:
📥 https://cran.r-project.org/bin/windows/Rtools/
🔸 بعد از نصب و یا برای نصب اگر مشکلی داشتید می توانید در گروه تلگرامی مطرح کنید تا با کمک هم حل کنیم.
🔹 توجه: برای کاربران مک نیازی به نصب RTools نیست. ابزارهای لازم برای کامپایل معمولاً از طریق Xcode یا Homebrew فراهم میشود.
🔸 اگر صرفاً پکیجها را از CRAN نصب میکنید، معمولاً نیازی به RTools ندارید.
🔸 اما برای کار حرفهایتر، مخصوصاً در حوزههایی مانند تحلیلهای بیزی، وجود آن ضروری است.
💬 برای گفتگو، پرسش و پاسخ و رفع اشکال به گروه تلگرامی ما بپیوندید:
https://t.me/rrstudiogroup
📡 اگر هنوز عضو نشدید، کانال را دنبال کنید:
https://t.me/r_rstudio_pro
📸 نکات تصویری و ترفندهای R را در اینستاگرام دنبال کنید:
https://instagram.com/r_rstudiopro
🧠 با ما بمانید؛ از R بیشتر بدانید، هوشمندتر تحلیل کنید.
#R #RStudio #rstats #r_tips #RTools #نصب_RTools #آموزش_R🔹 پاکسازی سریع محیط R 🔹
برای حذف تمام آبجکتها از محیط کاری، از دستور زیر استفاده کنید:
rm(list = ls())
🔸 این دستور همهی متغیرها، دادهها، توابع و … را از Environment پاک میکند.
🔸 گاهی برای شروع یک پروژهی تازه یا جلوگیری از تداخل دادهها ضروری است.
🔹 اگر میخواهید تمام پنجرههای گرافیکی را هم ببندید (مثلاً وقتی چند نمودار باز است)، این دستور را هم اضافه کنید:
graphics.off()
🔸 با ترکیب این دو دستور، محیط R کاملاً پاکسازی میشود و آمادهی اجرای کدهای جدید خواهد بود.
🔸 به عنوان یک اقدام حرفهای در برنامه نویسی همواره این دو سطر را اول همه فایل های کد خود قرار دهید.
💬 برای گفتگو، پرسش و پاسخ و رفع اشکال به گروه تلگرامی ما بپیوندید:
https://t.me/rrstudiogroup
📡 اگر هنوز عضو نشدید، کانال را دنبال کنید:
https://t.me/r_rstudio_pro
📸 نکات تصویری و ترفندهای R را در اینستاگرام دنبال کنید:
https://instagram.com/r_rstudiopro
🧠 با ما بمانید؛ از R بیشتر بدانید، هوشمندتر تحلیل کنید.
#R #RStudio #rstats #r_tips #آموزش_R #پاکسازی_محیط