R、 参数意味着不同的行数

R、 参数意味着不同的行数,r,dataframe,R,Dataframe,我在R中生成了一个数据帧(df)(见下文)。如果我使用列“x2”而不是“x2a”来创建数据帧,那么一切都会正常工作。但是,只要我使用“x2a”而不是“x2”,我就会得到一个错误,因为“x2a”的输入具有不同的长度。您知道我如何更改它将用于列“x2a”的代码吗 带有“x2a”的错误消息: 用于再现数据帧和错误的代码 x1 <- c("A", "B", "C") x2 <- c("[1,3,5,6,7]",&

我在R中生成了一个数据帧(df)(见下文)。如果我使用列“x2”而不是“x2a”来创建数据帧,那么一切都会正常工作。但是,只要我使用“x2a”而不是“x2”,我就会得到一个错误,因为“x2a”的输入具有不同的长度。您知道我如何更改它将用于列“x2a”的代码吗

带有“x2a”的错误消息:

用于再现数据帧和错误的代码

x1 <- c("A", "B", "C")
x2 <- c("[1,3,5,6,7]","[5,7,8,9,10]","[3,4,5,8,9]")
x2a <- c("[1,3,5]","[5,7,8,9,10, 20, 30, 24]","[3,4,5,8,9]")
x3 <- c(8000, 74555, 623334)
x4 <- c(9000, 76000, 623500)

df <- data.frame(cbind(x1, x2a, x3, x4))
colnames(df) <- c("Id", "Noise", "Start", "End")
df$Start <- as.numeric(as.character(df$Start))
df$End <- as.numeric(as.character(df$End))

# remove square brackets
df$Noise <- gsub("\\[|\\]", "", df$Noise)

# split 
split_it <- strsplit(df$Noise, split = ",")
df_2 <- data.frame(Id = rep(df$Id), Noise = unlist(split_it), Start = rep(df$Start), End = rep(df$End))
df_2 <- df_2[order(df_2$Id),]
rownames(df_2) <- NULL
x1基R
我推断您想要的不是R可以“直觉”给您的东西:您希望它根据
strsplit
工作时找到的元素数重复
Id
中的值。(R应该如何知道观察一个对象并任意重复另一个对象?)

尝试使用
rep(,times=)
指定
Id
(etc)的每个元素应重复多少次,以便与
噪声保持“同步”

#拆分
拆分it基础R
我推断您想要的不是R可以“直觉”给您的东西:您希望它根据
strsplit
工作时找到的元素数重复
Id
中的值。(R应该如何知道观察一个对象并任意重复另一个对象?)

尝试使用
rep(,times=)
指定
Id
(etc)的每个元素应重复多少次,以便与
噪声保持“同步”

#拆分
分开吧
x1 <- c("A", "B", "C")
x2 <- c("[1,3,5,6,7]","[5,7,8,9,10]","[3,4,5,8,9]")
x2a <- c("[1,3,5]","[5,7,8,9,10, 20, 30, 24]","[3,4,5,8,9]")
x3 <- c(8000, 74555, 623334)
x4 <- c(9000, 76000, 623500)

df <- data.frame(cbind(x1, x2a, x3, x4))
colnames(df) <- c("Id", "Noise", "Start", "End")
df$Start <- as.numeric(as.character(df$Start))
df$End <- as.numeric(as.character(df$End))

# remove square brackets
df$Noise <- gsub("\\[|\\]", "", df$Noise)

# split 
split_it <- strsplit(df$Noise, split = ",")
df_2 <- data.frame(Id = rep(df$Id), Noise = unlist(split_it), Start = rep(df$Start), End = rep(df$End))
df_2 <- df_2[order(df_2$Id),]
rownames(df_2) <- NULL