Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有条件地向新列添加值,并替换R中条件列中的值_R_Dataframe_Replace - Fatal编程技术网

有条件地向新列添加值,并替换R中条件列中的值

有条件地向新列添加值,并替换R中条件列中的值,r,dataframe,replace,R,Dataframe,Replace,我正在进行一个项目,在这个项目中,我需要将文件读入我的环境中,然后根据行的名称更改一个值并向新列添加新值:即 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 ./Flu

我正在进行一个项目,在这个项目中,我需要将文件读入我的环境中,然后根据行的名称更改一个值并向新列添加新值:即

     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
因此,在本例中,我想查看每一行的
文件行行名
,如果行名相同,则创建两个变量:
Conc
&
Rep
,并替换
文件行名
处的值,如下所示:

     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"
它告诉我:

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

如果我设法用另一个代码块绕过警告消息,基本上,
文件行名
Conc
Rep
列将被替换为相同的值,并且不会根据条件进行任何更改。

而不是
if
(未矢量化),我们创建一个逻辑行索引并使用它来分配

i1 <- 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")

mydf[i1, c("Conc", "Rep", "file_row_name")] <- list("12.5", 3, "T0")

i1
如果
没有矢量化,你可以使用
ifelse
但是我认为它不允许我添加列,或者我不知道如何做。你能检查下面发布的解决方案吗
i1 <- 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")

mydf[i1, c("Conc", "Rep", "file_row_name")] <- list("12.5", 3, "T0")