我有一個數據框列表(通過讀取目錄中的每個文件創建);每個數據幀包含4列:遍歷數據框列表並解析數據框名稱以檢索新列的值
hit_name (character)
hit_raw_value (real)
hit_norm_value (real)
hit_significance (real)
另外我想爲每個數據框添加3列,名爲 - 藥名,劑量和組。特定數據框中每列的值在所有行中都是相同的,並可通過解析該數據框的名稱獲得,格式爲:「drugname_dose_group_date_studyname」。例如,一個數據框被稱爲「tylenol_5mg_group1_oct14_pilotstudy」,所以我想要添加的'drugname'列將採用值'tylenol','dose'列將採用值'5mg',並且組列將採用值'group1'。
下面我試過的代碼將x $ drugname設置爲包含該數據框中所有已存在列的名稱的字符串,而不是將其設置爲'drugname'。
all_files = lapply(paste(mydir,filenames,sep="") ,read.delim)
names(all_files) = gsub(".txt","", filenames)
lapply(all_files,
function(x) {
x$drugname = gsub(".+?\\_(.+?)\\_(.+?)\\_(.+?)\\_.+", "\\1", deparse(quote(x)))
x$dose = gsub(".+?\\_(.+?)\\_(.+?)\\_(.+?)\\_.+", "\\2", deparse(quote(x)))
x$group = gsub(".+?\\_(.+?)\\_(.+?)\\_(.+?)\\_.+", "\\3", deparse(quote(x)))
}
請整理這個問題,並顯示您的數據框架和輸入的確切結構。 – 2015-04-02 02:03:12
你可以用'dput'來粘貼一個可重複使用的小數據集示例 – RockScience 2015-04-02 02:06:14
'deparse(quote(x))'不太可能在'lapply'裏面工作 – RockScience 2015-04-02 02:11:57