Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/65.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
ddply/transform不将函数应用于字符向量的每个元素_R_Dataframe_Character_Transform_Plyr - Fatal编程技术网

ddply/transform不将函数应用于字符向量的每个元素

ddply/transform不将函数应用于字符向量的每个元素,r,dataframe,character,transform,plyr,R,Dataframe,Character,Transform,Plyr,我有一个数据帧,我想使用我编写的名为“group1”的函数来转换第一列: group1我们仅使用[[1]]选择第一个列表元素。因此,当我们使用转换时,第一个被修改的元素将循环到长度 在执行gsub之前,我们可以通过使用sapply提取每个list元素来更改group1函数。我们不清楚为什么要替换“黄色”,因为第二个元素似乎只有“蓝色” group1 <- function(x) { temp <- strsplit(x,"_") temp <- sapply(te

我有一个数据帧,我想使用我编写的名为“group1”的函数来转换第一列:


group1我们仅使用
[[1]]
选择第一个
列表
元素。因此,当我们使用
转换时
,第一个被修改的元素将循环到长度

在执行
gsub
之前,我们可以通过使用
sapply
提取每个
list
元素来更改
group1
函数。我们不清楚为什么要替换“黄色”,因为第二个元素似乎只有“蓝色”

 group1 <- function(x) {
   temp <- strsplit(x,"_")
   temp <- sapply(temp, '[', 2) 
   temp <- gsub("Yellow", "", temp)
   temp <- gsub("Blue", "", temp)
   as.numeric(temp)
 }

group1谢谢,akrun!成功了。所以我的谬误是我有一个列表,ddply和transform不是用来处理列表元素,而是用来处理数据帧。对吗?那我能和llply合作吗?另外,请您解释一下
sapply(temp,'[',2)
?中的第二个参数和
gsub('\\D+','',temp)中的第一个参数,好吗
?非常感谢。PS-函数包括“黄色”和“蓝色”,因为输入有时在第二个参数中有“蓝色”,有时在第二个参数中有“黄色”。谢谢@akrun,我不知道你可以在*apply中使用“[”或“[[”作为函数。这真的很有帮助!
data_ling_RT2 <- transform(data_ling_RT, Group1 = group1(Code_Trials)))
 group1 <- function(x) {
   temp <- strsplit(x,"_")
   temp <- sapply(temp, '[', 2) 
   temp <- gsub("Yellow", "", temp)
   temp <- gsub("Blue", "", temp)
   as.numeric(temp)
 }
 group2 <- function(x) {
     temp <- strsplit(x,"_")
      temp <- sapply(temp, '[', 2) 
      temp <- as.numeric(gsub('\\D+', '', temp))
    }
 data_ling_RT <- data.frame(Code_Trials= c("MHY_Blue23_Yellow16_11A" , 
       "MHY_Blue24_Yellow16_11A"), stringsAsFactors=FALSE)
 transform(data_ling_RT, Group1 = group1(Code_Trials))
 #              Code_Trials Group1
 #1 MHY_Blue23_Yellow16_11A     23
 #2 MHY_Blue24_Yellow16_11A     24