ddply/transform不将函数应用于字符向量的每个元素
我有一个数据帧,我想使用我编写的名为“group1”的函数来转换第一列: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我们仅使用[[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