У меня есть 2 различных кадров данных, для которых я хотел бы выполнить линейную регрессиюР: Ошибка в модели линейной регрессии
Я написал следующий код для этого
mydir<- "/media/dev/Daten/Task1/subject1/t1"
#multiple subject paths should be given here
# read full paths
myfiles<- list.files(mydir,pattern = "regional_vol*",full.names=T)
# initialise the dataframe from first file
df<- read.table(myfiles[1], header = F,row.names = NULL, skip = 3, nrows = 1,sep = "\t")
# [-c(1:3),]
df
#read all the other files and update dataframe
#we read 4 lines to read the header correctly, then remove 3
ans<- lapply(myfiles[-1], function(x){ read.table(x, header = F, skip = 3, nrows = 1,sep = "\t") })
ans
#update dataframe
#[-c(1:3),]
lapply(ans, function(x){df<<-rbind(df,x)} )
#this should be the required dataframe
uncorrect<- array(df)
# Linear regression of ICV extracted from global size FSL
# Location where your icv is located
ICVdir <- "/media/dev/Daten/Task1/T1_Images"
#loding csv file from ICV
mycsv <- list.files(ICVdir,pattern = "*.csv",full.names = T)
af<- read.csv(file = mycsv,header = TRUE)
ICV<- as.data.frame(af[,2],drop=FALSE)
#af[1,]
#we take into consideration second column of csv
#finalcsv <-lapply(mycsv[-1],fudnction(x){read.csv(file="global_size_FSL")})
subj1<- as.data.frame(rep(0.824,each=304))
plot(df ~ subj1, data = df,
xlab = "ICV value of each subject",
ylab = "Original uncorrected volume",
main="intercept calculation"
)
fit <- lm(subj1 ~ df)
Кадр данных DF имеет 304 значения в следующем формате
6433 6433
1430 1430
1941 1941
3059 3059
3932 3932
6851 6851
и другого фрейма данных SUBJ1 имеет 304 значений в следующем формате
0.824
0.824
0.824
0.824
0.824
Когда я запускаю мой код я подвергаясь следующие ошибки
Error in model.frame.default(formula = subj1 ~ df, drop.unused.levels = TRUE) :
invalid type (list) for variable 'subj1'
любые предложения, почему значения data.frame из переменной SUBJ1 являются недопустимыми
Похоже, вопрос StackOverflow. Вы пробовали 'str (subj1)'? Это может дать некоторые идеи – Jon
@Jon, Да, я пробовал, он возвращал следующие значения: str (subj1): 'data.frame': \t 304 obs. из 1 переменной: $ rep (0.824, each = 304): num 0.824 0.824 0.824 0.824 0.824 0.824 0.824 0.824 0.824 0.824 .. – DevanDevak
Я думаю, что R ожидает вектор, а не data.frame. Вы пытались использовать 'subj1 <- rep (0.824, each = 304)', не превращая его в df? – JAD