【发布时间】:2021-01-20 04:50:21
【问题描述】:
我正在做一个项目,我需要将文件读入我的环境,然后根据行的名称更改一个值并将新值添加到新列:即
X1 Area Mean Min Max file_row_name
55 0.165 31.384 4 82 ./Fluorescence Analysis/T0-12.5-150-10x-3-1.csv
56 0.097 45.867 4 121 ./Fluorescence Analysis/T0-12.5-150-10x-3-1.csv
168 0.042 28.252 20 49 ./Fluorescence Analysis/T0-25-50-10x-1-1.csv
所以在示例中,我想查看每一行的 file_row_name,如果这些行具有相同的名称,请创建两个变量:Conc 和 Rep 并替换 file_row_name 的值,使其看起来像这个:
X1 Area Mean Min Max file_row_name Conc Rep
55 0.165 31.384 4 82 T0 12.5 3
56 0.097 45.867 4 121 T0 12.5 3
168 0.042 28.252 20 49 T0 25 1
到目前为止,我所做的是:
my_df$Conc[my_df$file_row_name == "./Fluorescence Analysis/T0-12.5-150-10x-3-1.csv"] <- 12.5
my_df$Rep[my_df$file_row_name == "./Fluorescence Analysis/T0-12.5-150-10x-3-1.csv"] <- 3
my_df$file_row_name[my_df$file_row_name == "./Fluorescence Analysis/T0-12.5-150-10x-3-1.csv"] <- "T0"
my_df$Conc[my_df$file_row_name == "./Fluorescence Analysis/T0-12.5-150-10x-3.csv"] <- 12.5
my_df$Rep[my_df$file_row_name == "./Fluorescence Analysis/T0-12.5-150-10x-3.csv"] <- 3
my_df$file_row_name[my_df$file_row_name == "./Fluorescence Analysis/T0-12.5-150-10x-3.csv"] <- "T0"
但这需要很长时间,当我尝试if 子句时:
if(my_df$file_row_name %in% c("./Fluorescence Analysis/T0-12.5-150-10x-3-1.csv",
"./Fluorescence Analysis/T0-12.5-150-10x-3.csv")){
my_df$Conc = "12.5"
my_df$Rep = 3
my_df$file_row_name = "T0"
}
它告诉我:
Warning message:
In if (my_df$file_row_name %in% c("./Fluorescence Analysis/T0-12.5-150-10x-3-1.csv", :
the condition has longitud > 1 and only the first element will be used
如果我设法用另一个代码片段绕过该警告消息,基本上 file_row_name Conc 和 Rep 列将被替换为相同的值,并且不会根据条件进行任何更改。
【问题讨论】:
-
if没有向量化,可以使用ifelse -
但它不允许我添加我认为的列,或者我无法弄清楚如何做到这一点。
-
你能检查下面发布的解决方案吗